GCC-PHAT广义互相关算法最大峰值为0点

老师好,我在使用广义互相关来计算时延的时候,不同的采样率和采样点都做了对比,(测距1m,理论时延是0.0029s,)普通互相关CC可以较为准确的得到时延(0.0028s),但使用GCC-PHAT时结果很不稳定,有时候可以计算出时延(0.0029s,精度确实会提升),有时候最大峰值又出现在零点或是其他点

这是我的代码,忘老师解惑

%实验工况:两侧点距离1m;采样率100K,采样点50K;

CaijiData1=importdata ('500-3000ChartView-采样率100K-采样点50K-2nd.csv');

Data1_Acuquire=CaijiData1.data;

Signal1=Data1_Acuquire(:,2);%相当于Y1值

Signal2=Data1_Acuquire(:,3);%相当于Y2值

Fs=100000; %设置采样率

T=1/Fs; %采样周期

%N=30000; %采样点数

CN=50000; %采样点数

t=0:T:(CN/Fs)-T;

N=length(t);

plot(t,Signal1,t,Signal2);

title('500-3000Hz信号');xlabel('采样时间/S');ylabel('幅值(V)');

X1=fft(Signal1,2*N-1);

X2=fft(Signal2,2*N-1);

S12=X1.*conj(X2);%互功率

S11=X1.*conj(X1);

S22=X2.*conj(X2);

%不同权函数

H1=1;

H2=1./abs(S12);%PHAT

H3=1./S11;%ROTH

H4=1./sqrt(S11.*S22);%SCOT

H5=abs(S12)./(S11.*S22);%HB

H6=(abs(S12).^2)./(S11.*S22);%WP

%发现出现问题的点出现在互相关函数的中心及两端,所以想要去除了这些点

% 去除坏点

JQ=5;%截掉坏点的长度

Cxy1=Cxy(JQ:length(Cxy)/2-5);

Cxy2=Cxy(length(Cxy)/2+5:end-5);

CxyF=[Cxy1;Cxy2];

t1=(-N+1:N-1)/Fs;

% 横坐标点数匹配

T1=0:2*N-2;%点数作为横坐标

T11=T1(JQ:length(T1)/2-5);

T12=T1(length(T1)/2+5:end-5);

T1end=[T11,T12];

t1=(-N+1:N-1)/Fs;

T=0:2*N-2;%点数作为横坐标

[max,location]=max(CxyF);

plot(T1end,CxyF,'b');

title('GCC');xlabel('互相关点数');ylabel('R12');grid on

d=location-N/2-1

d=location+JQ-N

Delay=d/Fs

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值