;+ ;FUNCTION: dimen_shift(x,shift) ;NAME: ; dimen_shift ;PURPOSE: ; Rotate dimensions of a multidimensional array. ; This function is very similar to transpose but works on multi-dimensional ; arrays to shift the dimensions around. ; It has no effect on scalars and one dimensional arrays. ;INPUT: ; x multi-dimensional array of any type ; shift: 1 or -1 direction of shift. ;CREATED BY: Davin Larson ;LAST MODIFICATION: @(#)dimen_shift.pro 1.4 98/07/09 ; ;- function dimen_shift,x,shft s = size(x) dim = s(0) n = n_elements(x) if dim le 1 then return,x ;if dim eq 2 then return,transpose(x) dims = s(1:dim) case shft of 1: t_dims = [n/dims(dim-1),dims(dim-1)] -1: t_dims = [dims(0),n/dims(0)] 0: return,x else: message,'Unable to shift dimensions by more than one.' endcase new_x = reform(x,t_dims) new_x = transpose(new_x) new_dims = shift(dims,shft) new_x = reform(new_x ,new_dims,/overwrite) return,new_x end