;----------------------------------------------------------------- ; rebinfft.pro ; ; written 11.11.97 by Andreas Reigber ;------------------------------------------------------------------ ; Performs a rebin from and to any dimension using FFT's ; Only for two-dimensional complex arrays ; ; Usage: ; res = rebinfft(arr,new_x,new_y) ;------------------------------------------------------------------ ; This software has been released under the terms of the GNU Public ; license. See http://www.gnu.org/copyleft/gpl.html for details. ;------------------------------------------------------------------ function rebinfft,arr,x2,y2 sizx = (size(arr))[1] sizy = (size(arr))[2] x2 = long(x2) y2 = long(y2) if x2 gt sizx then begin xe_o = sizx/2-1 xa_o = sizx/2 xe = sizx/2-1 xa = x2 - sizx/2 if ((sizx mod 2) ne 0) then begin xe = xe + 1 xa_o = xa_o + 1 xe_o = xe_o + 1 endif endif else begin xe_o = x2/2-1 xa_o = sizx - x2/2 xe = x2/2-1 xa = x2/2 if ((x2 mod 2) ne 0) then begin xa = xa + 1 xe = xe + 1 xe_o = xe_o + 1 endif endelse if y2 gt sizy then begin ye_o = sizy/2-1 ya_o = sizy/2 ye = sizy/2-1 ya = y2 - sizy/2 if ((sizy mod 2) ne 0) then begin ye = ye + 1 ya_o = ya_o + 1 ye_o = ye_o + 1 endif endif else begin ye_o = y2/2-1 ya_o = sizy - y2/2 ye = y2/2-1 ya = y2/2 if ((y2 mod 2) ne 0) then begin ya = ya + 1 ye = ye + 1 ye_o = ye_o + 1 endif endelse farr = fft(arr,-1) fbarr = complexarr(x2,y2) fbarr[0:xe,0:ye] = farr[0:xe_o,0:ye_o] fbarr[xa:*,0:ye] = farr[xa_o:*,0:ye_o] fbarr[0:xe,ya:*] = farr[0:xe_o,ya_o:*] fbarr[xa:*,ya:*] = farr[xa_o:*,ya_o:*] fbarr = fft(fbarr,1) return,fbarr end