Home > m > sigproc > frequency_domain > ltpda_compute_f.m

ltpda_compute_f

PURPOSE ^

LTPDA_COMPUTE_F compute the frequency and resolution vectors for

SYNOPSIS ^

function [f,r,m, L,rr,rrr] = ltpda_compute_f(fs, N, Kdes, Kmin, Jdes, olap)

DESCRIPTION ^

 LTPDA_COMPUTE_F compute the frequency and resolution vectors for
 use with mlpsd.
 
 usage [f,r,m,L] = ltpda_compute_f(fs, N, Kdes, Kmin, Jdes, olap)
 
   fs   - sample frequency of data
   N    - length of data vector
   Kdes - desired number of averages
   Kmin - minimun number of averages
   Jdes - desired number of points in spectrum
   olap - overlap value (0-1)
 
 M Hewitson 22-01-07
 
 
 $Id: ltpda_compute_f.m,v 1.2 2007/06/20 06:28:21 hewitson Exp $

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [f,r,m, L,rr,rrr] = ltpda_compute_f(fs, N, Kdes, Kmin, Jdes, olap)
0002 
0003 
0004 % LTPDA_COMPUTE_F compute the frequency and resolution vectors for
0005 % use with mlpsd.
0006 %
0007 % usage [f,r,m,L] = ltpda_compute_f(fs, N, Kdes, Kmin, Jdes, olap)
0008 %
0009 %   fs   - sample frequency of data
0010 %   N    - length of data vector
0011 %   Kdes - desired number of averages
0012 %   Kmin - minimun number of averages
0013 %   Jdes - desired number of points in spectrum
0014 %   olap - overlap value (0-1)
0015 %
0016 % M Hewitson 22-01-07
0017 %
0018 %
0019 % $Id: ltpda_compute_f.m,v 1.2 2007/06/20 06:28:21 hewitson Exp $
0020 %
0021 
0022 
0023 % Settings
0024 fmin = fs/N;
0025 fmax = fs/2;
0026 j    = 1;
0027 f(j) = fmin;
0028 
0029 % Initialise constants
0030 rav  = fs/N*(1+(1-olap)*(Kdes-1));
0031 rmin = fs/N*(1+(1-olap)*(Kmin-1));
0032 g    = log(fmax)-log(fmin);
0033 
0034 % compute f(j)
0035 while f < fmax
0036   % compute r'(j)
0037   rr(j) = f(j)*g/(Jdes-1);
0038   % compute r''(j)
0039   if rr(j) >= rav
0040     rrr(j) = rr(j);
0041   else
0042     rrr(j) = sqrt(rav*rr(j));
0043   end
0044 
0045   % if this is below the lower possible resolution
0046   if rrr(j) <= rmin
0047     rrr(j) = rmin;
0048   end
0049   
0050   % compute L(j)
0051   L(j) = round(fs/rrr(j));
0052 
0053   % compute freq res
0054   r(j) = fs/L(j);
0055   m(j) = f(j)/r(j);
0056 
0057   tf = f(j) + r(j);
0058   if tf<fmax
0059     f(j+1) = tf;
0060     j = j + 1;
0061   else
0062     break
0063   end
0064 end
0065 
0066

Generated on Mon 02-Jul-2007 12:19:41 by m2html © 2003