RunMat
  • Pricing
RunMat
GitHub
GitHub
DownloadSign InTry in Browser
DesktopRuntimeServer
RunMat

Run math blazing fast

GitHubX (Twitter)LinkedIn

Company

  • About
  • Pricing
  • Contact

Explore

  • RunMat for academia
  • RunMat vs MATLAB Online
  • Benchmarks

Get product updates and release notes from the RunMat team.

© 2026 Dystr · Made withfor the scientific community.

RunMat™ is a registered trademark of Dystr, Inc. MATLAB® is a registered trademark of The MathWorks, Inc. RunMat is not affiliated with, endorsed by, or sponsored by The MathWorks, Inc.

LicensePrivacy
/
See all docs
Builtin Reference
    • fft
    • fft2
    • fftn
    • fftshift
    • ifft
    • ifft2
    • ifftn
    • ifftshift

ifftshift — Shift centered spectra back to origin ordering in MATLAB and RunMat.

ifftshift(X) circularly shifts data so zero-frequency components move back to origin ordering. Default and dimension-specific shifting behavior follow MATLAB semantics.

Syntax

Y = ifftshift(X)
Y = ifftshift(X, DIM)

Inputs

NameTypeRequiredDefaultDescription
XAnyYes—Numeric, complex, logical, or gpuArray input.
DIMAnyNo[]Dimension selector (scalar, numeric vector, or logical mask vector).

Returns

NameTypeDescription
YAnyShifted array with the same size and type family as X.

Errors

IdentifierWhenMessage
RunMat:ifftshift:ArgCountMore than two input arguments are supplied.ifftshift: invalid argument count
RunMat:ifftshift:InvalidDimensionsDIM argument is malformed or out of range.ifftshift: invalid dimension argument
RunMat:ifftshift:InvalidInputX is not a supported numeric/logical input type.ifftshift: expected numeric or logical input
RunMat:ifftshift:UnsupportedInputX is an unsupported object/cell/function/meta runtime type.ifftshift: unsupported input type
RunMat:ifftshift:InternalShifting, tensor reconstruction, or GPU transfer operations fail.ifftshift: internal error
RunMat:ifftshift:ProviderIntegrityThe provider returns ownership, shape, or physical metadata inconsistent with the request.ifftshift: provider integrity error

How ifftshift works

  • When no dimensions are specified, every axis is shifted by ceil(size(X, dim) / 2).
  • A scalar dimension restricts shifting to one axis. RunMat additionally accepts a dimension vector or logical mask as a compatibility-gated extension.
  • Odd-length dimensions shift by one additional element compared with fftshift, matching MATLAB's ifftshift parity rules.
  • Works for real, complex, logical, and GPU-resident tensors.
  • Empty arrays and scalars are returned unchanged.

Does RunMat run ifftshift on the GPU?

RunMat first attempts to execute the shift entirely on the GPU using the provider's circshift hook. If that is unavailable, RunMat gathers the data exactly once, performs the reorder on the host, and uploads the result so downstream computations can continue on the device. Scalars remain on their current device to avoid unnecessary transfers.

GPU memory and residency

When the input owner exposes a compatible circshift, ifftshift accepts only a fresh result with matching shape, class, storage, precision, device, and ownership. An explicit unsupported-hook response uses one exact internal download and class-preserving restoration; provider failures and malformed results are terminal.

Examples

Undoing fftshift on an even-length spectrum

x = 0:7;
y = ifftshift(x)

Expected output:

y = [4 5 6 7 0 1 2 3]

Undoing fftshift on an odd-length spectrum

x = 1:5;
y = ifftshift(x)

Expected output:

y = [3 4 5 1 2]

Preparing data for inverse FFT

fx = fft(rand(1, 8));
centered = fftshift(fx);
restored = ifftshift(centered);
signal = ifft(restored)

Shifting only selected dimensions

A = reshape(1:12, 3, 4);
rowsShifted = ifftshift(A, 1);   % shift rows only
colsShifted = ifftshift(A, 2);   % shift columns only

Expected output:

rowsShifted =
     2     5     8    11
     3     6     9    12
     1     4     7    10

colsShifted =
     7    10     1     4
     8    11     2     5
     9    12     3     6

Using ifftshift with gpuArray data

G = gpuArray(0:7);
shifted = ifftshift(G);
host = gather(shifted)

Expected output:

host = [4 5 6 7 0 1 2 3]

Using ifftshift with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how ifftshift changes the result.

Run a small ifftshift example, explain the result, then change one input and compare the output.

FAQ

When should I call ifftshift?⌄

Call ifftshift right before ifft (or ifftn) after you have applied fftshift-based processing in the frequency domain. It restores the DC component to index 1.

Is ifftshift always the inverse of fftshift?⌄

Yes. For any supported input, ifftshift(fftshift(X)) returns X, including odd-length dimensions where the shift counts differ.

Does ifftshift modify data values?⌄

No. It only reorders elements. Magnitudes, phases, and overall content stay the same.

Can I restrict ifftshift to specific axes?⌄

Yes. Pass a dimension index, vector of indices, or logical mask exactly like in MATLAB.

Does ifftshift support gpuArray inputs?⌄

Yes. RunMat keeps GPU data on-device whenever possible and falls back to a single gather/upload cycle otherwise.

Related Math functions

Fft

fft · fft2 · fftn · fftshift · ifft · ifft2 · ifftn

Elementwise

abs · angle · bsxfun · complex · conj · double · erf · erfcinv · exp · expm1 · factorial · flintmax · gamma · gammaln · heaviside · hypot · idivide · imag · intmax · intmin · ldivide · log · log10 · log1p · log2 · minus · nextpow2 · plus · pow2 · power · rdivide · real · realmax · realmin · realsqrt · rescale · sign · single · sqrt · swapbytes · times · typecast · uint16 · uint32 · uint8

Trigonometry

acos · acosh · asin · asinh · atan · atan2 · atanh · cos · cosd · cosh · cospi · deg2rad · pol2cart · rad2deg · sin · sind · sinh · sinpi · tan · tand · tanh

Reduction

all · any · bounds · cummax · cummin · cumprod · cumsum · cumtrapz · diff · gradient · max · maxk · mean · median · min · mink · movmax · movmean · movmedian · movmin · movprod · movstd · movsum · movvar · nnz · prod · rms · std · sum · trapz · var

Structure

bandwidth · isdiag · ishermitian · issymmetric · istril · istriu · symrcm

Signal

blackman · butter · buttord · cheb2ord · conv · conv2 · deconv · downsample · envelope · filter · filtfilt · fir1 · freqz · gauspuls · hamming · hann · hilbert · periodogram · pulstran · pwelch · rectpuls · resample · sawtooth · sinc · spectrogram · square · tripuls · unwrap · upsample · zplane

Rounding

ceil · fix · floor · mod · rem · round

Factor

chol · decomposition · eig · eigs · lu · qr · svd

Solve

cond · det · inv · linsolve · norm · null · pinv · rank · rcond · rref · vecnorm

Optim

coneprog · fminbnd · fminunc · fsolve · fzero · integral · linprog · lsqcurvefit · lsqnonlin · optimoptions · optimset · quad · secondordercone

Ops

cross · ctranspose · dot · mldivide · mpower · mrdivide · mtimes · pagemtimes · pagetranspose · trace · transpose

Symbolic

digits · int · limit · piecewise · sym · syms · vpa

Interpolation

griddedInterpolant · interp1 · interp1q · interp2 · pchip · ppval · spline

Discrete

lcm · primes

Ode

ode15s · ode23 · ode45

Poly

polyder · polyfit · polyint · polyval · roots

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how ifftshift is executed, line by line, in Rust.

  • View the source for ifftshift in Rust on GitHub
  • Learn how the RunMat runtime works
  • Found a bug? Open an issue with a minimal reproduction.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.

  • RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
  • Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.

Download RunMatOpen Sandbox
On this page
  • Syntax
  • Inputs
  • Returns
  • Errors
  • How ifftshift works
  • Does RunMat run ifftshift on the GPU?
  • GPU memory and residency
  • Examples
  • Undoing fftshift on an even-length spectrum
  • Undoing fftshift on an odd-length spectrum
  • Preparing data for inverse FFT
  • Shifting only selected dimensions
  • Using ifftshift with gpuArray data
  • Using ifftshift with coding agents
  • FAQ
  • Related Math functions
  • Fft
  • Elementwise
  • Trigonometry
  • Reduction
  • Structure
  • Signal
  • Rounding
  • Factor
  • Solve
  • Optim
  • Ops
  • Symbolic
  • Interpolation
  • Discrete
  • Ode
  • Poly
  • Open-source implementation
  • About RunMat