时延估计,利用广义互相关函数法
刚接触声源定位的小白,有个问题想请教各位,我在这里http://www.ilovematlab.cn/thread-165480-1-1.html看到的一个广义互相关函数法求时延的程序,我把程序粘到下面了,我想问一下里面求时延的时候d=location-N要怎么理解呢
clear all; clc; close all;
N=1024;%长度
Fs=500;%采样频率
n=0:N-1;
t=n/Fs; %时间序列
a1=5; %信号幅度
a2=5;
d=2; %延迟点数
x1=a1*cos(2*pi*10*n/Fs); %信号1
x1=x1+randn(size(x1)); %加噪声
x2=a2*cos(2*pi*10*(n+d)/Fs); %信号2
x2=x2+randn(size(x2));
subplot(211);
plot(t,x1,'r');
axis([-0.2 1.5 -6 6]);
hold on;
plot(t,x2,':');
axis([-0.2 1.5 -6 6]);
legend('x1信号', 'x2信号');
xlabel('时间/s');ylabel('x1(t) x2(t)');
title('原始信号');grid on;
hold off
%互相关函数
X1=fft(x1,2*N-1);
X2=fft(x2,2*N-1);
Sxy=X1.*conj(X2);
Cxy=fftshift(ifft(Sxy));
%Cxy=fftshift(real(ifft(Sxy)));
subplot(212);
t1=(0:2*N-2)/Fs;
plot(t1,Cxy,'b');
title('互相关函数');xlabel('时间/s');ylabel('Rx1x2(t)');grid on
=max(Cxy);%求出最大值max,及最大值所在的位置(第几行)location;
%d=location-N/2-1 %算出延迟了几个点
d=location-N;
Delay=d/Fs ; %求得时间延迟 时间间隔??? Accompany 发表于 2016-10-12 08:12 static/image/common/back.gif
时间间隔???
不清楚…广义互相关法最后求得的不
DaikiRyooo 发表于 2016-10-12 08:31 static/image/common/back.gif
不清楚…广义互相关法最后求得的不
没写完就点发送了……d最后求的值应该就是两个信号的时延,不过广义互相关函数法原理最后求得时延是在互相关函数峰值处不是吗?那不就是上面的location吗?不知道我理解的对不对
DaikiRyooo 发表于 2016-10-12 08:37
没写完就点发送了……d最后求的值应该就是两个信号的时延,不过广义互相关函数法原理最后求得时延是在互 ...
要是按照你的说法那就是location处 think2015 发表于 2016-10-12 08:41 static/image/common/back.gif
要是按照你的说法那就是location处
我是这么理解的,所以就不明白为什么程序上是location-N;
我还没试过改成location 的结果,我试试
DaikiRyooo 发表于 2016-10-12 08:50
我是这么理解的,所以就不明白为什么程序上是location-N;
我还没试过改成location 的结果,我试试
location是时延位置求时间的话要减去N我也只是猜测 好多人都研究这个有没有完整的程序 算时延要d=location-N; Delay=d/Fs ; 两句一起看,location是互相关函数的峰值位置,而之前求互相关时fft是2N-1个点的,所以时延就是要二者相减再除以采样率 lebronze 发表于 2016-11-2 21:22
算时延要d=location-N; Delay=d/Fs ; 两句一起看,location是互相关函数的峰值位置,而之前求互相关时f ...
运行了吗
页:
[1]