?? 計算相關.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 + -