声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2052|回复: 9

[FFT] 时延估计,利用广义互相关函数法

[复制链接]
发表于 2016-10-11 22:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
刚接触声源定位的小白,有个问题想请教各位,我在这里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,location]=max(Cxy);%求出最大值max,及最大值所在的位置(第几行)location;
%d=location-N/2-1        %算出延迟了几个点
d=location-N;
Delay=d/Fs ;             %求得时间延迟

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2016-10-12 08:12 | 显示全部楼层
时间间隔???
 楼主| 发表于 2016-10-12 08:31 | 显示全部楼层
 楼主| 发表于 2016-10-12 08:37 | 显示全部楼层
DaikiRyooo 发表于 2016-10-12 08:31
不清楚…广义互相关法最后求得的不

没写完就点发送了……d最后求的值应该就是两个信号的时延,不过广义互相关函数法原理最后求得时延是在互相关函数峰值处不是吗?那不就是上面的location吗?不知道我理解的对不对

点评

要是按照你的说法 那就是location处  详情 回复 发表于 2016-10-12 08:41
发表于 2016-10-12 08:41 | 显示全部楼层
DaikiRyooo 发表于 2016-10-12 08:37
没写完就点发送了……d最后求的值应该就是两个信号的时延,不过广义互相关函数法原理最后求得时延是在互 ...

要是按照你的说法  那就是location处
 楼主| 发表于 2016-10-12 08:50 | 显示全部楼层
think2015 发表于 2016-10-12 08:41
要是按照你的说法  那就是location处

我是这么理解的,所以就不明白为什么程序上是location-N;
我还没试过改成location 的结果,我试试

点评

location是时延位置 求时间的话要减去N 我也只是猜测  详情 回复 发表于 2016-10-12 10:02
发表于 2016-10-12 10:02 | 显示全部楼层
DaikiRyooo 发表于 2016-10-12 08:50
我是这么理解的,所以就不明白为什么程序上是location-N;
我还没试过改成location 的结果,我试试

location是时延位置  求时间的话要减去N  我也只是猜测
发表于 2016-10-26 12:58 | 显示全部楼层
好多人都研究这个  有没有完整的程序
发表于 2016-11-2 21:22 | 显示全部楼层
算时延要d=location-N; Delay=d/Fs ;   两句一起看,location是互相关函数的峰值位置,而之前求互相关时fft是2N-1个点的,所以时延就是要二者相减再除以采样率

点评

运行了吗  详情 回复 发表于 2016-11-3 09:27
发表于 2016-11-3 09:27 | 显示全部楼层
lebronze 发表于 2016-11-2 21:22
算时延要d=location-N; Delay=d/Fs ;   两句一起看,location是互相关函数的峰值位置,而之前求互相关时f ...

运行了吗
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-15 13:58 , Processed in 0.071461 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表