The LTPDA method ao/cohere estimates the cross-coherence of time-series
signals, included in the input aos following the Welch's averaged, modified periodogram method .
Data are windowed prior to the estimation of the spectra, by multiplying
it with a spectral window object, and can be detrended by a polinomial of time in order to reduce the impact
of the border discontinuities. The window length is adjustable to shorter lenghts to reduce the spectral
density uncertainties, and the percentage of subsequent window overlap can be adjusted as well.
b = cohere(a1,a2,pl)
a1 and a2 are the 2 aos containing the input time series to be evaluated, b is the output object and pl is an optional parameters list.
As an alternative to setting the number of points 'Nfft' in each window, it's possible to ask for a given number of coherence estimates by setting the 'Navs' parameter, and the algorithm takes care of calculating the correct window length, according to the amount of overlap between subsequent segments.
|If the user doesn't specify the value of a given parameter, the default value is used.|
The function makes cross-coherence estimates between the 2 input aos. If passing two identical objects or linearly combined signals, the output will be 1 at all frequencies. The same will happen if analyzing only a single window.
The algorithm is based in standard MATLAB's tools, as the ones used by pwelch. The standard deviation of the mean is computed as 
Evaluation of the cross-coherence of two time-series represented by: a low frequency sinewave signal superimposed to white noise and a linear drift, and a low frequency sinewave signal at the same frequency, phase shifted and with different amplitude, superimposed to white noise.
% parameters nsecs = 5000; fs = 10; nfft = 1000; % build first signal components x1 = ao(plist('waveform','sine wave','f',0.1,'A',1,'nsecs',nsecs,'fs',fs,'yunits','m')) x2 = ao(plist('waveform','noise','type','normal','nsecs',nsecs,'fs',fs,'yunits','m')) x3 = ao(plist('tsfcn', 't','nsecs',nsecs,'fs',fs,'yunits','m')); % add components x = x1 + x2 + x3; % build second signal components y1 = ao(plist('waveform','sine wave','f',0.1,'A',2,'nsecs',nsecs,'fs',fs,'phi',90)); y2 = 4*ao(plist('waveform','noise','type','normal','nsecs',nsecs,'fs',fs)); % add components and set units y = y1 + y2; y.setYunits('V'); % compute coherence pl = plist('win','BH92','nfft',nfft, 'order',1); Cxy = cohere(x,y,pl); %plot iplot(Cxy);
|Cross-spectral density estimates||Transfer function estimates|