PIVMat Function Reference<< Prev | Next >> 
spec2f
2D power spectrum of vector/scalar fields.

Description
SP2 = spec2f(F) returns a structure SP2 containing the 2D power 
spectrum of the vector or scalar field(s) F. If F is an array of 
fields, the average spectrum is returned. 
 
SP2 = spec2f(F,'hann') applies a Hann (or Hanning) apodization window 
to the fields along each direction in order to reduce aliasing. Note 
that, in this case, energy is not conserved (the amount of energy 
lost in the apodization is about 60%, but the exact value depends on 
the details of the energy distribution). 
 
The X and Y dimensions of the fields must be even. If one of the 
dimension is odd, the last column/row is discarded. 
 
spec2f(F,...,'disp') displays the 1D (azimuthally-averaged) power 
spectrum - works only if F is defined on a square domain. If not, use 
truncf (truncation) or zeropadf (zero padding) first. 
 
Use the syntax SP2 = spec2f(F, ..., 'disp2d'), or spec2f(F, ...) without 
output argument, to also display the 2D spectrum in the plane (kx,ky). 
 
spec2f(F,...,'Property1','Property2',...) specifies the following 
properties: 
  'circle '    also displays circles (to test the isotropy of 2D power spectra). 
  'contour'    displays iso-contour of the spectrum 
  'contourf'   displays filled iso-contours of spectrum 
  'linear'     displays the spectrum in linear scale (log by default) 
 
After the property 'contour' or 'contourf', it is possible to specify 
the logarithmic step between each countour line. Default step is 1, 
i.e. the contour lines are speced by a factor of 10. 
 
spec2f(SP2) displays the spectrum, where SP has been previously computed 
using SP2 = spec2f(...). If SP2 is a structure array, loops over all spectra 
(press a key between each display). 
 
For vector field(s), the structure SP contains: 
    kx,ky:    wavenumbers along x and y 
    ex:       2D power spectrum of F_x 
    ey:       2D power spectrum of F_y 
    ez:       2D power spectrum of F_z (for 3-component fields only) 
    e:        2D power spectrum (sum of the p.s. of F_x, F_y, and F_z) 
    ep:       1D azimuthally averaged power spectrum 
    k:        wavenumber 
    unitk:    unit of wavenumber 
    unite:    unit of power spectrum (energy density) 
    appod:    Apodization window ('Hann' or 'None') 
    nfields:  number of fields used in the computation 
    history:  remind from which field specf has been called. 
 
For scalar field(s), the structure SP contains: 
    kx,ky:    wavenumbers along x and y 
    e:        2D power spectrum 
    k:        wavenumber 
    ep:       1D azimuthally averaged power spectrum 
    unitk:    unit of wavenumber 
    unite:    unit of power spectrum (energy density) 
    appod, nfields, history: idem as for vector fields 
 
The unit for the wavenumber is the inverse of the unit for the spatial 
scale (e.g. in 1/mm). The length of the spectrum is half the length of 
the field. Some properties: 
  sp2.k(1) is always 0 (zero mode = mean component of the field) 
  sp2.k(2) is the wavenumber increment, Delta k = 2*pi/L, where L is the 
             size of the field. 
  sp2.k(end) is pi/dx, where dx is the mesh size of the field. 
 
The unit for the spectra is given by the unit of 
the input field squared, times the unit of scale.  For instance, for a 
velocity field given in m/s with spatial scale in mm, the unit for the 
spectra is (m^2/s^2)*mm, i.e. (m^3/s^2)/1000. 
 
Example
 
   v=loadvec('*'); 
   sp2=spec2f(truncf(v),'hann'); 
   spec2f(sp2,'disp2d'); 
 
Energy Conservation (Parseval theorem) 
 
For a scalar field, energy conservation requires that 
  SUM(SP2.EX(:))*SP2.KX(2) = SUM(SP.EY(:))*SP.KY(2) = MEAN(F.W(:).^2) 
and, if the field is square with equal scales along X and Y: 
  SUM(SP2.E(:))*SP.K(2) = MEAN(F.W(:).^2) 
 
Relations between 1D and 2D spectra: 
Two ways of computing the 1D spectrum along x of u_x: 
   v = loadvec('*'); 
   u = vec2scal(v,'ux'); 
   sp = specf(u);              % 1D spectrum of u_x 
   sp2 = spec2f(u);            % 2D spectrum of u_x 
   int_spx = sum(sp2.e,1);     % sum of the 2D spec. along x 
   loglog(sp.k, sp.ex, 'ro', sp2.k, 2*int_spx(end/2+1:end), 'b'); 
 
See Also
specf, statf, vsf, ssf, truncf, zeropadf, corrf. 
Published output in the Help browser 
   showdemo spec2f 
 

 Previous: spaverfNext: specf 

2005-2021 PIVMat Toolbox 4.20