Home > chronux_1_15 > 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 clear err trialave params
0028 [N,NCHAN]=size(data);
0029 tapers=dpsschk(tapers,N,Fs);
0030 nfft=2^(nextpow2(N)+pad);% number of points in fft
0031 [N,K]=size(tapers);
0032 if nargin<3 || isempty(mdkp); 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=repmat(tvec,[1 K]);
0037 tvec=tvec*2*pi*i;
0038 f=getfgrid(Fs,nfft,fpass);
0039 nf=length(f);
0040 sp=zeros(NCHAN,nf,mdkp);
0041 sp=sp+i*sp;
0042 fm=zeros(K,nf,mdkp);
0043 fm=fm+i*fm;
0044 sv=zeros(nf,min([K,NCHAN]));
0045 for j=1:nf 
0046 %     for k=1:K
0047 %       proj(:,k)=tapers(:,k).*exp(-f0*tvec');
0048 %     end
0049     proj=tapers.*exp(-f(j)*tvec);
0050     tmp=data'*proj; % projected data
0051     [u,s,v]= svd(tmp,0); % svd
0052     for mk=1:mdkp, 
0053       sp(:,j,mk)=u(:,mk)';
0054       fm(:,j,mk)=v(:,mk)';
0055     end  
0056     sv(j,:)=diag(s);
0057 end;

Generated on Tue 15-Aug-2006 22:51:57 by m2html © 2003