function array_insert, arr_a, arr_b, index if n_params() lt 2 then begin message,'Incorrect arguments. Usage: a=array_insert(array1, array2 [, index] )', /cont return, -1 endif checkvar, index, 0 a_ndim = size(arr_a, /n_dim) b_ndim = size(arr_b, /n_dim) if a_ndim gt 2 or b_ndim gt 2 then begin message, 'Error. Can not handle > 2D arrays.', /cont return, -1 endif sa = size(arr_a, /dim) a_dim1 = sa[0] a_dim2 = a_ndim le 1 ? 1 : sa[1] sb = size(arr_b, /dim) b_dim1 = sb[0] > 1 b_dim2 = b_ndim le 1 ? 0 : sb[1] if b_ndim gt 1 and (b_dim2 ne a_dim2) then begin message, 'Error. Second dimension of destination array and array to insert must match.', /cont return, -1 endif do_rebin = a_dim2 ne b_dim2 ;if index eq 0 then return, [ (do_rebin ? rebin(arr_b[*],b_dim1,a_dim2) : arr_b), arr_a] ;if index ge a_dim1 then return, [ arr_a, (do_rebin ? rebin(arr_b[*],b_dim1,a_dim2) : arr_b) ] ;return, [ arr_a[0:index-1,*], (do_rebin ? rebin(arr_b[*],b_dim1,a_dim2) : arr_b), arr_a[index:*,*] ] if index eq 0 then return, [ (do_rebin ? reproduce(arr_b[*],a_dim2) : arr_b), arr_a] if index ge a_dim1 then return, [ arr_a, (do_rebin ? reproduce(arr_b[*],a_dim2) : arr_b) ] return, [ arr_a[0:index-1,*], (do_rebin ? reproduce(arr_b[*],a_dim2) : arr_b), arr_a[index:*,*] ] en