Home > chronux_0.5 > continuous > spsvd.m

spsvd

PURPOSE ^

Space frequency SVD of input data - continuous processes

SYNOPSIS ^

function [sv,sp,fm] = spsvd(data,params,mdkp)

DESCRIPTION ^

 Space frequency SVD of input data - continuous processes
 Usage: [sv,sp,fm] = spsvd(data,params,mdkp)
 Inputs:
 data       (data matrix in timexchannels form)-required
       params      structure containing parameters - params has the
       following fields: tapers, Fs, fpass, pad
            tapers         (parameters for calculating tapers [NW,K]) - optional. Defaults to [3 5]
            Fs             (sampling frequency) -- optional. Defaults to 1.
           fpass       (frequency band to be used in the calculation in the form
                                   [fmin fmax])- optional. 
                                   Default all frequencies between 0 and Fs/2
            pad            (padding factor for the FFT) - optional. Defaults to 0.  
                          e.g. For N = 500, if PAD = 0, we pad the FFT 
                          to 512 points; if PAD = 2, we pad the FFT
                          to 2048 points, etc.
 mdkp       (number of dimensions to be kept)-optional. Default is the
               maximum possible modes determined by taper parameters

 Outputs:
 sv sp fm  : singular values, space modes, frequency modes

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [sv,sp,fm] = spsvd(data,params,mdkp)
0002 % Space frequency SVD of input data - continuous processes
0003 % Usage: [sv,sp,fm] = spsvd(data,params,mdkp)
0004 % Inputs:
0005 % data       (data matrix in timexchannels form)-required
0006 %       params      structure containing parameters - params has the
0007 %       following fields: tapers, Fs, fpass, pad
0008 %            tapers         (parameters for calculating tapers [NW,K]) - optional. Defaults to [3 5]
0009 %            Fs             (sampling frequency) -- optional. Defaults to 1.
0010 %           fpass       (frequency band to be used in the calculation in the form
0011 %                                   [fmin fmax])- optional.
0012 %                                   Default all frequencies between 0 and Fs/2
0013 %            pad            (padding factor for the FFT) - optional. Defaults to 0.
0014 %                          e.g. For N = 500, if PAD = 0, we pad the FFT
0015 %                          to 512 points; if PAD = 2, we pad the FFT
0016 %                          to 2048 points, etc.
0017 % mdkp       (number of dimensions to be kept)-optional. Default is the
0018 %               maximum possible modes determined by taper parameters
0019 %
0020 % Outputs:
0021 % sv sp fm  : singular values, space modes, frequency modes
0022 
0023 
0024 if nargin < 1; error('Need data'); end;
0025 if nargin < 2 || isempty(params); params=[]; end;
0026 [tapers,pad,Fs,fpass,err,trialave,params]=getparams(params);
0027 
0028 N=size(data,1);
0029 tapers=dpsschk(tapers,N,Fs);
0030 nfft=2^(nextpow2(N)+pad);% number of points in fft
0031 [N,K]=size(tapers);
0032 if isempty(mdkp) || nargin<5; mdkp=min(K,NCHAN);
0033 elseif mdkp > min(K,NCHAN); error('mdkp has to be less than both K and NCHAN');end;
0034 
0035 tvec=1:N;
0036 tvec=tvec*2*pi*i;
0037 f=getfgrid(Fs,nfft,fpass);
0038 nf=length(f);
0039 
0040 sp=zeros(nwin,NCHAN,nf,mdkp);
0041 sp=sp+i*sp;
0042 fm=zeros(nwin,K,nf,mdkp);
0043 fm=fm+i*fm;
0044 sv=zeros(nwin,nf,min([K,NCHAN]));
0045 proj=zeros(N,K);
0046 for j=1:nf 
0047     f0=f(j)/Fs;
0048     for k=1:K
0049       proj(:,k)=tapers(:,k).*exp(-f0*tvec');
0050     end
0051     tmp=data'*proj; % projected data
0052     [u,s,v]= svd(tmp,0); % svd
0053     for mk=1:mdkp, 
0054       sp(n,:,j,mk)=u(:,mk)';
0055       fm(n,:,j,mk)=v(:,mk)';
0056     end  
0057     sv(n,j,:)=diag(s);
0058 end;

Generated on Tue 16-Aug-2005 21:33:45 by m2html © 2003