📄 计算相关.m
字号:
%如何求两个信号的互相关函数?
%如何求两个信号的互相关函数?
%sig1(1:200)=cos(w*(1:200)+5);
%sig1(201:501)=cos(w*(201:501)+12);
%sig2(1:404)=cos(w*(1:404)+5);
%sig2(405:501)=cos(w*(405:501)+15);
%如何求两个信号的互相关函数?纵坐标是相关系数,横坐标是数据长度,
%谢谢
%答案
fs=1000;
t=0:1/fs:1;
w=15;
x=cos(w*t+15);
y=sin(w*t+17);
k=length(x);
xk=fft(x,2*k);
yk=fft(y,2*k);
rm=real(ifft(conj(xk).*yk));
rm=[rm(k+2:2*k) rm(1:k)];
m=(-k+1):(k-1);
plot(m,rm);
%主要是不懂纵轴表示什么,最好是表示相关系数,
%楼主用FFT的方法来求相关时要注意,其中数据怎么安排是一个需要了解的问题。从楼主的程序来看求出的是循环相关函数。楼主要求相关系数,其数学表达式应为:
%rm(n)=Rxy(n)/sqrt(Rxx(0)*Ryy(0))
%我用xcorr函数来计算,程序如下:
fs=1000;
t=0:1/fs:1;
w=15;
x=cos(w*t+15);
y=sin(w*t+17);
k=length(x);
Rxy=xcorr(x,y);
Rxx0=sum(x.*x);
Ryy0=sum(y.*y);
rm=Rxy/sqrt(Rxx0*Ryy0);
m=(-k+1):(k-1);
plot(m,rm);
grid;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -