spsvd

PURPOSE ^

Space frequency SVD of input data - continuous processes

SYNOPSIS ^

function [sv,sp,fm] = spsvd(data,tapers,Fs,fpass,mdkp)

DESCRIPTION ^

 Space frequency SVD of input data - continuous processes
 Usage: [sv,sp,fm] = spsvd(data,tapers,Fs,fpass,mdkp)
 Inputs:
 data       (data matrix in timexchannels form)-required
 tapers     (tapers parameters or precalculated tapers)-required
 Fs         (sampling frequency)-optional. Default 1
 fpass      (band of frequencies to be kept)-optional. Default [0 Fs/2]
 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,tapers,Fs,fpass,mdkp)
0002 % Space frequency SVD of input data - continuous processes
0003 % Usage: [sv,sp,fm] = spsvd(data,tapers,Fs,fpass,mdkp)
0004 % Inputs:
0005 % data       (data matrix in timexchannels form)-required
0006 % tapers     (tapers parameters or precalculated tapers)-required
0007 % Fs         (sampling frequency)-optional. Default 1
0008 % fpass      (band of frequencies to be kept)-optional. Default [0 Fs/2]
0009 % mdkp       (number of dimensions to be kept)-optional. Default is the
0010 %               maximum possible modes determined by taper parameters
0011 %
0012 % Outputs:
0013 % sv sp fm  : singular values, space modes, frequency modes
0014 
0015 
0016 if nargin < 2; error('Need data and tapers'); end;
0017 if nargin < 3; Fs=1; end;
0018 if nargin < 4; fpass=[0 Fs/2]; end;
0019 
0020 [N,NC]=size(data);
0021 tapers=dpsschk(tapers,N);
0022 [N,K]=size(tapers);
0023 if isempty(mdkp) | nargin<5; mdkp=min(K,NCHAN);
0024 elseif mdkp > min(K,NCHAN); error('mdkp has to be less than both K and NCHAN');end;
0025 
0026 tvec=1:N;
0027 tvec=tvec*2*pi*i;
0028 [f,findx]=getfgrid(Fs,fpass
0029 nf=length(f);
0030 
0031 sp=zeros(nwin,NCHAN,nf,mdkp);
0032 sp=sp+i*sp;
0033 fm=zeros(nwin,K,nf,mdkp);
0034 fm=fm+i*fm;
0035 sv=zeros(nwin,nf,min([K,NCHAN]));
0036 proj=zeros(N,K);
0037 for j=1:nf 
0038     f0=f(j)/Fs;
0039     for k=1:K
0040       proj(:,k)=tapers(:,k).*exp(-f0*tvec');
0041     end
0042     tmp=data'*proj; % projected data
0043     [u,s,v]= svd(tmp,0); % svd
0044     for mk=1:mdkp, 
0045       sp(n,:,j,mk)=u(:,mk)';
0046       fm(n,:,j,mk)=v(:,mk)';
0047     end  
0048     sv(n,j,:)=diag(s);
0049 end;

Generated on Tue 24-Aug-2004 15:55:33 by m2html © 2003