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

fftshift — Shift zero-frequency components to spectrum centers in MATLAB and RunMat.

fftshift(X) circularly shifts FFT output so the zero-frequency component moves to the center of each shifted dimension. The default all-dimension behavior and optional dimension selection follow MATLAB semantics.

Syntax

Y = fftshift(X)
Y = fftshift(X, DIM)

Inputs

NameTypeRequiredDefaultDescription
XAnyYes—Numeric, complex, logical, or gpuArray input.
DIMAnyNo—Positive scalar dimension; vectors and logical masks are RunMat extensions.

Returns

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

Errors

IdentifierWhenMessage
RunMat:fftshift:ArgCountMore than two input arguments are supplied.fftshift: invalid argument count
RunMat:fftshift:InvalidDimensionsDIM argument is malformed or out of range.fftshift: invalid dimension argument
RunMat:fftshift:InvalidInputX is not a supported numeric/logical input type.fftshift: expected numeric or logical input
RunMat:fftshift:UnsupportedInputX is an unsupported object/cell/function/meta runtime type.fftshift: unsupported input type
RunMat:fftshift:InternalShifting, tensor reconstruction, or GPU transfer operations fail.fftshift: internal error

How fftshift works

  • When called without a dimension list, fftshift shifts along every dimension by floor(size(X, dim) / 2).
  • fftshift(X, DIM) shifts one documented scalar dimension. Numeric vectors and logical masks are separately gated RunMat extensions.
  • Dimensions of length 0 or 1 are left unchanged.
  • Inputs can be real or complex and may already reside on the GPU (gpuArray).

Does RunMat run fftshift on the GPU?

RunMat asks the input's owning provider to execute fftshift via the circshift hook. If the provider cannot satisfy the request, the tensor is gathered once, shifted on the host, and restored to that provider. Scalars remain on their existing device.

GPU memory and residency

RunMat keeps FFT spectra on the GPU whenever the input's owning provider can execute the required circshift. Otherwise RunMat gathers the data once, performs the host shift, and restores the result to the same provider so subsequent work can remain resident. You can call gpuArray explicitly when you want to guarantee a residency boundary.

Examples

Centering the spectrum of a 1-D FFT result with even length

x = [0 1 2 3 4 5 6 7];
fx = fft(x);
y = fftshift(fx)

Expected output:

y = [-4 -4-1.6569i -4-4i -4-9.6569i 28 -4+9.6569i -4+4i -4+1.6569i]

Handling odd-length vectors

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

Expected output:

y = [4 5 1 2 3]

Centering both axes of a 2-D FFT

A = [1 2 3; 4 5 6];
C = fftshift(A)

Expected output:

C =
     6     4     5
     3     1     2

Shifting only one dimension of a matrix

A = [1 2 3; 4 5 6];
rowCentered = fftshift(A, 1)   % shift rows only

Expected output:

rowCentered =
     4     5     6
     1     2     3

Applying fftshift to a gpuArray spectrum

G = gpuArray(0:7);
centered = fftshift(G);
H = gather(centered)

Expected output:

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

Using fftshift with coding agents

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

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

FAQ

When should I call fftshift?⌄

Call fftshift whenever you need to center FFT outputs before visualising spectra, computing radial averages, or applying filters that expect zero frequency in the middle of the array.

Does fftshift modify the phase or magnitude of the FFT?⌄

No. fftshift only reorders the samples. Magnitudes, phases, and the overall information content remain unchanged.

How do I undo fftshift?⌄

Use ifftshift, which performs the inverse rearrangement. The sequence ifftshift(fftshift(X)) returns X for all supported inputs.

Can I apply fftshift to only one dimension?⌄

Pass a positive scalar dimension such as fftshift(X,2). RunMat extension mode additionally accepts numeric dimension vectors and logical masks.

Does fftshift work with gpuArray inputs?⌄

Yes. RunMat keeps data on the GPU whenever the provider exposes the circshift hook, matching MATLAB's gpuArray behaviour.

How does fftshift handle empty inputs?⌄

Empty arrays are returned unchanged with identical shape metadata.

Can I use fftshift on logical arrays?⌄

Yes. Logical arrays are shifted without changing their logical element type.

Related Math functions

Fft

fft · fft2 · fftn · ifft · ifft2 · ifftn · ifftshift

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 fftshift is executed, line by line, in Rust.

  • View the source for fftshift 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 fftshift works
  • Does RunMat run fftshift on the GPU?
  • GPU memory and residency
  • Examples
  • Centering the spectrum of a 1-D FFT result with even length
  • Handling odd-length vectors
  • Centering both axes of a 2-D FFT
  • Shifting only one dimension of a matrix
  • Applying fftshift to a gpuArray spectrum
  • Using fftshift 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