Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 寻找两个信号的相干性_Matlab_Signal Processing - Fatal编程技术网

Matlab 寻找两个信号的相干性

Matlab 寻找两个信号的相干性,matlab,signal-processing,Matlab,Signal Processing,我试图找到两个信号之间的一致性。我使用了mscohere函数,但结果看起来有噪声,因为信号长(100000)。因此,我将信号分成一个记录,并尝试从(coherence=abs(Pxy)/sqrt(Pxx*Pyy))中找到一致性。我找到了Pxx和Pyy,它们都有1000记录。然而,当我试图找到Pxy时,我得到的点数是(129)点数。程序不起作用了。我不知道原因 N=100000; SF=1000; A=sin(2*pi*100*t)+0.5*sin(2*pi*300*t); Y=0.

我试图找到两个信号之间的一致性。我使用了
mscohere
函数,但结果看起来有噪声,因为信号长
(100000)
。因此,我将信号分成一个记录,并尝试从
(coherence=abs(Pxy)/sqrt(Pxx*Pyy))
中找到一致性。我找到了
Pxx
Pyy
,它们都有
1000
记录。然而,当我试图找到
Pxy
时,我得到的点数是
(129)
点数。程序不起作用了。我不知道原因

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);

看起来您的输出域选择在自相关和互相关之间不一致。我是否可以建议对这两个指标使用一致的分析

Pxx = cpsd( D, D);%auto-spectra D
Pyy = cpsd( D1, D1);%auto-spectra D1
Pxy = cpsd( D, D1);%cross-spectra D-D1  

coherence = abs(Pxy.*conj(Pxy))./(Pxx.*Pyy);

非常感谢。信号很长,结果会产生噪音。我必须把信号分成记录。