How to calculate the covariance of two vectors using wcoherence?

조회 수: 1 (최근 30일)
Jakob Sievers
Jakob Sievers 2016년 11월 4일
Hi there
How does one calculate the covariance of two vectors from the cross-spectrum outputs of the wcoherence function?
Below is a code example of my problem. My first thought was to simply perform a double integral over the wavelet cross-spectrum, wcs, using trapz (see cc_wav in the code) but that does not give an answer similar to the covariance output (see resulting figure title).
What am I missing here?
Thanks in advance for any help you can provide!
/Jakob
% make data (similar to "doc wcoherence")
rng default;
t = 0:0.001:2;
x = cos(2*pi*10*t).*(t>=0.5 & t<1.1)+cos(2*pi*50*t).*(t>= 0.2 & t< 1.4)+0.25*randn(size(t));
y = sin(2*pi*10*t).*(t>=0.6 & t<1.2)+sin(2*pi*50*t).*(t>= 0.4 & t<1.6)+ 0.35*randn(size(t));
% calculate cross-spectrum
[~,wcs,f,coi] = wcoherence(x,y,1/0.001);
wcs=real(wcs);
% covariances
cc_cov=cov(x,y);cc_cov=cc_cov(2);
cc_wav=trapz(t,trapz(f,wcs)); %????!
% plot results
figure
h = pcolor(t,log10(f),wcs);
h.EdgeColor = 'none';
ax = gca;
hold on;
plot(ax,t,log10(coi),'k--','linewidth',2);
colorbar;
ax.XLabel.String='Time (s)';
ax.YLabel.String='Logarithmic frequency';
ax.Title.String = {'Wavelet Cospectrum';['cov(x,y)=',num2str(cc_cov),' | cov_{wavelet}=',num2str(cc_wav)]};

답변 (0개)

카테고리

Help CenterFile Exchange에서 Continuous Wavelet Transforms에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by