Ich versuche die Kohärenz zwischen zwei Signalen zu finden. Ich habe mscohere
Funktion verwendet, aber das Ergebnis sieht Rauschen aus, weil das Signal lang ist (100000)
. Also habe ich das Signal in einen Datensatz aufgeteilt und versuche die Kohärenz aus (coherence=abs(Pxy)/sqrt(Pxx*Pyy))
zu finden. Ich fand die Pxx
und Pyy
und beide haben 1000
Datensätze. Als ich jedoch versuchte, Pxy
die Anzahl der Punkte zu finden, die ich bekam, ist es (129)
Punkte. und das Programm funktioniert nicht. Ich weiß nicht, den Grund für dieseKohärenz von zwei Signalen suchen
N=100000;
SF=1000;
A=sin(2*pi*100*t)+0.5*sin(2*pi*300*t);
Y=0.8*randn(1,length(A))+A;
D=reshape(A(1,1:100000),[1000,100]).';
M=length(D(1,:));
D1=reshape(Y(1,1:100000),[1000,100]).';
M1=length(D1(1,:));
for i=1:100
FFT_A(i,:)=fft(D(i,:));
S_A(i,:)=(FFT_A(i,:).*conj(FFT_A(i,:)))/M;
FFT_Y(i,:)=fft(D1(i,:));
S_Y(i,:)=(FFT_Y(i,:).*conj(FFT2_Y(i,:)))/M;
Pxy (i,:)= cpsd(D(i,:),D1(i,:));
end
S_A_F=sum(S_A);
S_Y_F=sum(S_Y);
Pxy_F=sum(Pxy);
coherence=abs(Pxy_F)./sqrt(S_A_F.*S_Y_F);
Vielen Dank. Das Signal ist lang und das Ergebnis wird laut. Ich muss das Signal in Aufzeichnungen aufteilen. – user6052232