Hi all,
I am missing something with magnitude Squared Coherence and/or its algorithm. If two signals are compared without or with little noise I get unexpected results. As an example taking from the ML help page:
Fs = 1000; t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*100*t)+sin(2*pi*200*t)+0.5*randn(size(t)); y = 0.5*cos(2*pi*100*t-pi/4)+0.35*sin(2*pi*200*t-pi/2)+ … 0.5*randn(size(t)); [Pxy,F] = mscohere(x,y,hamming(100),80,100,Fs);
gives the expected two peak response. I would have thought that with no noise the mscohere would be similar and even stronger but it is not. Run the same code without the noise
x = cos(2*pi*100*t)+sin(2*pi*200*t); y = 0.5*cos(2*pi*100*t-pi/4)+0.35*sin(2*pi*200*t-pi/2);
[Pxy,F] = mscohere(x,y,hamming(100),80,100,Fs);
and rather than getting two strong peaks and the rest near or at zero, you get unity for all frequencies.
You don't need much noise, 0.5% or -46dB will do. Below this and the results get real funky.
Furthermore, without some noise the algorithm sees harmonics very strongly even though they are not in both signals:
x = cos(2*pi*100*t)+sin(2*pi*200*t)+0.5*randn(size(t)); y = 0.5*cos(2*pi*100*t-pi/4);
still gives two strong peaks at 100 and 200 unless y has noise. Then all is as expected.
Why is this?
Best Answer