--- a
+++ b/ifftshift.m
@@ -0,0 +1,49 @@
+## Copyright (C) 1997 by Vincent Cautaerts
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this file.  If not, write to the Free Software Foundation,
+## 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {} ifftshift (@var{v})
+## Undo the action of the fftshift function.  For even length @var{v}, fftshift
+## is its own inverse, but odd lengths differ slightly.
+## @end deftypefn
+
+## Author: Vincent Cautaerts <vincent@comf5.comm.eng.osaka-u.ac.jp>
+## Created: July 1997
+## Adapted-By: jwe
+## Modified-By: Paul Kienzle, converted from fftshift
+
+function retval = ifftshift (V)
+
+  retval = 0;
+
+  if (nargin != 1)
+    usage ("usage: ifftshift (X)");
+  endif
+
+  if (is_vector (V))
+    x = length (V);
+    xx = floor (x/2);
+    retval = V([xx+1:x, 1:xx]);
+  elseif (is_matrix (V))
+    [x, y] = size (V);
+    xx = floor (x/2);
+    yy = floor (y/2);
+    retval = V([xx+1:x, 1:xx], [yy+1:y, 1:yy]);
+  else
+    error ("ifftshift: expecting vector or matrix argument");
+  endif
+
+endfunction