Multivariate power spectral density on a logarithmic scale can be performed by the LPSD algorithm (Measurement 39 (2006) 120-129), which is an application of Welch's averaged, modified periodogram method. The transfer function estimates are not evaluated at freqencies which are linear multiples of the minimum frequency resolution 1/T, where T is the window lenght, but on a logarithmic scale. The algorithm takes care of calculating the frequencies at which to evaluate the spectral estimate, aiming at minimizing the uncertainty in the estimate itself, and to recalculate a suitable window length for each frequency bin.
ao/ltfe estimates the transfer function of time-series
signals, included in the input aos. Data are windowed prior to the estimation of the spectra, by multiplying
it with a spectral window object, and can be detrended by polinomial of time in order to reduce the impact
of the border discontinuities. Detrending is performed on each individual window.
Syntaxis
b = ltfe(a1,a2,pl)
a1 and a2 are the 2 aos containing the input time series to be evaluated; b is the output object. The parameter list pl includes the following parameters:
As an alternative, the user can input, as a value for the 'Win' key, a string corresponding to the name of the window. In the case of Kaiser window, it's necessary to specify the additional parameter 'psll'.
| If the user doesn't specify the value of a given parameter, the default value is used. |
The function makes logaritmic frequencyscale transfer functions estimates between the 2 input aos, and the output will contain the transfer function estimate from the first ao to the second.
Example
Evaluation of the transfer function between two time-series represented by: a low frequency sinewave signal superimposed to white noise, and a low frequency sinewave signal at the same frequency, phase shifted and with different amplitude, superimposed to white noise.
nsecs = 1000;
fs = 10;
x = ao(plist('waveform','sine wave','f',0.1,'A',1,'nsecs',nsecs,'fs',fs)) + ...
ao(plist('waveform','noise','type','normal','nsecs',nsecs,'fs',fs));
x.setYunits('m');
y = ao(plist('waveform','sine wave','f',0.1,'A',2,'nsecs',nsecs,'fs',fs,'phi',90)) + ...
4*ao(plist('waveform','noise','type','normal','nsecs',nsecs,'fs',fs));
y.setYunits('V');
nfft = 1000;
Txy = ltfe(x,y,plist('win',specwin('Kaiser',1,200),'nfft',nfft));
Tyx = ltfe(y,x,plist('win',specwin('Kaiser',1,200),'nfft',nfft));
iplot(Txy);
iplot(Tyx);