File Exchange

image thumbnail

Calculate Wigner distribution

version (1.75 KB) by Adam Wyatt
Calculates the 2D Wigner distribution of a complex function.


Updated 20 Jul 2007

View License

W = mywigner(Ex)

W = output Wigner distribution
Ex = Input electric field (MUST be a column vector

W = Int(-inf..inf){E(x+y)E(x-y)exp[2ixy]}
E(x+y) & E(x-y) are calculated via a FFT (fast Fourier transform) using the
shift theorem. The integration is performed via a FFT. Thus it is important for the data to satisfy the sampling theorem:
dy = 2*pi/X X = span of all x-values dy = y resolution
dx = 2*pi/Y Y = span of all y-values dx = x resolution
The data must be completely contained within the range x(0)..x(N-1) & y(0)..y(N-1) (i.e. the function must fall to zero within this range).

Cite As

Adam Wyatt (2020). Calculate Wigner distribution (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (10)

wu jia hao

your delay is always half of the signal
the matrix can be too large
for chirp test the max locations should be at phase 2*f*b*t but the max is alwayes at the center

Adam Wyatt

You have to think what you are doing - given data of length N, the Wigner distribution is N^2, so clearly with N=10^5, N^2 = 10^10 - you're not going to ever be able to make such a Wigner distribution.

However, it is possible that you do not need the Wigner distribution over the whole temporal and spectral domains. Unfortunately I have not implemented this yet.


i am working on seismic data that has a total length of almost 100000 data point.When i am running wigner distribution it is showing 'out of memory'.

The user has to add a multiplication for incr_x in order to preserve the energy of the signal.

Herliyani Hasanah

Very good

kim ngan tran

ashutosh singh

MATLAB Release Compatibility
Created with R2007a
Compatible with any release
Platform Compatibility
Windows macOS Linux