Multivariate power spectral density on a logarithmic scale can be performed by the LPSD algorithm, which is an application of Welch's averaged, modified periodogram method, cross-spectral density 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,a3,...,pl)
a1, a2, a3, ... are aos containing the input time series to be evaluated. They need to be in a number N >= 2. b includes the NxN output objects. 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 transfer functions estimate sbetween all input aos. Therefore, if the input argument list contains N analysis objects, the output a will contain NxN TFE estimates. The diagonal elements will be 1.
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'); z = ltfe(x,y,plist('win',specwin('Kaiser',1,200),'nfft',1000)); iplot(z(1,2)); iplot(z(2,1));