查看: 154|回复: 4|关注: 0

[已答复] 广义互相关中加权函数的作用

[复制链接]

新手

9 麦片

财富积分


050


5

主题

11

帖子

0

最佳答案
发表于 2019-9-2 15:38:57 | 显示全部楼层 |阅读模式
老师你好,经过实验仿真,发现广义互相关中的加权函数都可以起到锐化峰值的作用,但是对于噪声而言,加权函数的表现反而不如没有加权函数的表现好。所以我想请教下老师,对于噪声带来的影响,加权函数是起到积极作用还是消极影响?
%% 分帧后对信号求时延误差%%
clc,clear;
close all
[x0,fs]=audioread('狙击步枪2.wav');
x0=x0(3.3e4:4e4);%截取有话段
xx=x0-mean(x0);                         % 消除直流分量
x1=xx/max(abs(xx));                      % 幅值归一化
S1=[zeros(1,20),x1];
S2=[x1,zeros(1,20)];
S1=Gnoisegen(S1,10);
S2=Gnoisegen(S2,10);
wlen=600; inc=300;          % 给出帧长和帧移
win=hanning(wlen);         % 给出海宁窗
N=length(x1);               % 信号长度
X1=enframe(S1,win,inc)';     % 分帧
X2=enframe(S2,win,inc)';     % 分帧
fn=size(X1,2);              % 求出帧数
time=(0:N-1)/fs;           % 计算出信号的时间刻度
a=gccfun1(X1,X2,'basic',wlen,fn);
b=gccfun1(X1,X2,'PHAT',wlen,fn);
d=gccfun1(X1,X2,'ROTH',wlen,fn);

10dB噪声下22帧信号的时延估计误差

10dB噪声下22帧信号的时延估计误差

论坛优秀回答者

17

主题

5198

帖子

1128

最佳答案
  • 关注者: 639
发表于 2019-9-3 10:18:50 | 显示全部楼层
1,LZ图中的横坐标是什么单位
2,LZ用的还是循环相关,是否改为线性相关试试
3,是否方便提供“狙击步枪2.wav”数据

新手

9 麦片

财富积分


050


5

主题

11

帖子

0

最佳答案
 楼主| 发表于 2019-9-3 10:56:48 | 显示全部楼层
songzy41 发表于 2019-9-3 10:18
1,LZ图中的横坐标是什么单位
2,LZ用的还是循环相关,是否改为线性相关试试
3,是否方便提供“狙击步枪2.w ...

1, 图中横坐标是第几帧,从第1帧信号到第22帧信号
2,线性相关我这就试一下
3,已上传

狙击步枪2.zip

952.97 KB, 下载次数: 2

新手

9 麦片

财富积分


050


5

主题

11

帖子

0

最佳答案
 楼主| 发表于 2019-9-3 10:59:27 | 显示全部楼层
songzy41 发表于 2019-9-3 10:18
1,LZ图中的横坐标是什么单位
2,LZ用的还是循环相关,是否改为线性相关试试
3,是否方便提供“狙击步枪2.w ...

function xxx=gccfun1(x1,x2,fun,wlen,fn)


X1=fft(x1);
X2=fft(x2);
a =(X1).*conj(X1);
b = (X2).*conj(X2);
c = (X1).*conj(X2);

if strcmpi(fun,'PHAT')
X12=(c)./(abs(c)); %%PHAT
elseif strcmpi(fun,'ROTH')
X12=(c)./(a); %%ROTH
elseif strcmpi(fun,'SCOT')
X12=(c)./sqrt(a.*b);   
elseif strcmpi(fun,'basic')
X12=(X1).*conj(X2);
end
x12=ifft(X12);


[maxx,a1]=max(x12);
% xx=[a1;x12(a1)];
a1=a1-1;
for i =1:fn
if a1(i)>(wlen/2)
    a1(i)=a1(i)-wlen;   
end
end
xxx=a1;   %正号表明1在后,2在前

论坛优秀回答者

17

主题

5198

帖子

1128

最佳答案
  • 关注者: 639
发表于 2019-9-3 19:48:11 | 显示全部楼层
我看了LZ的数据,对于程序我奇怪,为什么要取帧长为600,是否有什么依据? 实际上LZ是取一次枪声的中间部分通过相关来计算延迟量,而这枪声本身是噪声,声音前后之间没有相关性。对于这种声音在计算延迟时帧长取长一些可能延迟量计算更准。我建议
1,帧长取长一些
2,分帧时不用加窗函数
我取帧长2500,不加窗函数,得到如下图,纵坐标是延迟的样点数
wh122b.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

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