diff options
Diffstat (limited to 'macros/periodogram.sci')
-rwxr-xr-x | macros/periodogram.sci | 46 |
1 files changed, 36 insertions, 10 deletions
diff --git a/macros/periodogram.sci b/macros/periodogram.sci index 33e15af..ca8995e 100755 --- a/macros/periodogram.sci +++ b/macros/periodogram.sci @@ -1,20 +1,46 @@ function [d,n]=periodogram(a,b,c,d,e) +//Return the periodogram (Power Spectral Density) of X +//Calling Sequence +// [PXX, W] = periodogram (X) +// [PXX, W] = periodogram (X, WIN) +// [PXX, W] = periodogram (X, WIN, NFFT) +// [PXX, W] = periodogram (X, WIN, NFFT, FS) +// [PXX, W] = periodogram (..., "RANGE") +//Parameters +// X:data vector. If X is real-valued a one-sided spectrum is estimated. If X is complex-valued, or "RANGE" specifies "twosided", the full spectrum is estimated. +//WIN: window weight data. If window is empty or unspecified a default rectangular window is used. Otherwise, the window is applied to the signal ('X .* WIN') before computing th periodogram. The window data must be a vector of the same length as X. +//NFFT:number of frequency bins. The default is 256 or the next higher power of 2 greater than the length of X ('max (256,2.^nextpow2 (length (x)))'). If NFFT is greater than the length of the input then X will be zero-padded to the length of NFFT. +//FS:sampling rate. The default is 1. +//RANGE:range of spectrum. "onesided" computes spectrum from [0..nfft/2+1]."twosided" computes spectrum from [0..nfft-1]. +//Description +//The optional second output W are the normalized angular frequencies. For a one-sided calculation W is in the range [0, pi]. If NFFT is even and [0, pi) if NFFT is odd. Similarly, for a two-sided calculation W is in the range [0, 2*pi] or [0, 2*pi)depending on NFFT. +// +//If a sampling frequency is specified, FS, then the output frequencies F will be in the range [0, FS/2] or [0, FS/2) for one-sided calculations. For two-sided calculations the range will be [0, FS). +// +//When called with no outputs the periodogram is immediately plotted in the current figure window. funcprot(0); - [nargout,nargin]=argn(); - select nargin + lhs= argn(1); + rhs= argn(2); + if(rhs<1 | rhs>5) + error("Wrong number of input arguments"); + end + if(lhs>2 | lhs< 2) + error("Wrong number of output arguments"); + end + select(rhs) case 1 then - [d,n]=callOctave('periodogram',a); + [d,n]= callOctave('periodogram',a); case 2 then - [d,n]=callOctave('periodogram',a,b); + [d,n]= callOctave('periodogram',a,b); + case 3 then - [d,n]=callOctave('periodogram',a,b,c); + [d,n]= callOctave('periodogram',a,b,c); + case 4 then - [d,n]=callOctave('periodogram',a,b,c,d); + [d,n]= callOctave('periodogram',a,b,c,d); + case 5 then - [d,n]=callOctave('periodogram',a,b,c,d,e); - else - error("Incorrect no. of Input Arguments"); + [d,n]= callOctave('periodogram',a,b,c,d,e); end - endfunction |