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.html,v 1.1 2007/06/08 14:15:10 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.html,v 1.1 2007/06/08 14:15:10 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   
0051 %     elseif rr(j) >= rmin && rr(j) < rav
0052 %     rrr(j) = sqrt(rav*rr(j));
0053 %   else
0054 %     rrr(j) = rmin;
0055 %   end
0056 
0057   
0058   % compute L(j)
0059   L(j) = round(fs/rrr(j));
0060 
0061   % compute freq res
0062   r(j) = fs/L(j);
0063   m(j) = f(j)/r(j);
0064 
0065   tf = f(j) + r(j);
0066   if tf<fmax
0067     f(j+1) = tf;
0068     j = j + 1;
0069   else
0070     break
0071   end
0072 end
0073 
0074

Generated on Fri 08-Jun-2007 16:09:11 by m2html © 2003