当前位置:   article > 正文

广义时延估计相关器特性分析_广义互相关gcc

广义互相关gcc

一、实验的背景和意义

        广义相关时延估计方法:相关法是最经典的时延估计方法,通过信号的自相关函数滞后的峰值估计信号之间延迟的时间差。但是对噪声的处理不好。目前改进的算法有:

        1.广义加权相关时延估计(GCC):主要是提高了信噪比。相关函数和功率谱密度函数是一对傅里叶变换对,在频域利用不同的加权函数对功率谱密度函数进行处理,从而实现信号的预白处理,即增强信噪比。

        2.广义相位谱时延估计:时延D通过傅里叶变换在频域上表现为功率谱密度函数的相位函数。theta(f)=-2πfD。同GCC一样,可以使用相位加权函数在频域实现相位谱时延估计。

        3.自适应时延估计:通过牺牲计算速度来降低对信号和噪声统计先验知识的要求。LMS算法是通过权矢量的迭代将问题转化为滤波器的参数估计问题,以两信号的最小均方误差为准则进行时延估计。ETDE算法是一种带约束的时延估计方法,滤波器采用N阶插值运算,直接用瞬时时延估值代替滤波器权系数进行迭代,减小了计算量。

…………………………………………………………………………………………………………………

二、实验目标和内容

        采用广义相关时延估计方法,首先对信号进行延时,再加入噪声,通过信号的自相关函数滞后的峰值估计信号之间延迟的时间差。

…………………………………………………………………………………………………………………

  • 实验方案和技术路线

1.信号延迟

在实际matlab仿真中,我们往往要实现信号的空间传播等等,这些实际上在不考虑信号的自由空间损耗的情况下,可以把空间传播看成一种信号的时延表示。基于信号傅里叶变换时移特性——信号发生时移,其频域的幅度谱不发生变化,变的是相位谱,利用Matlab产生一段信号。本次实验设定信号时长为1秒,采样频率为1000,实现对一个宽度为0.1的距离门信号进行0.1s的时延。处理时域步骤如下:

信号在matlab中就是一个数组的形式表示,我们在matlab中对信号进行时延操作其实就是对信号数组进行操作,使用插零法实现信号延迟。

由 时延点数=时延×采样频率,在原数组前面添加采样点数个0,原信号数组长度变为 原长度+时延点数,取数组原信号长度个数。即:信号时长1s,采样频率1000,则信号数组长度为1000(1×1000),时延0.1s,则需要在原信号数组前加上100(0.1×1000)个0,然后此时信号数组变为1100,与之前的信号数组长度不同,所以取前1000个赋值给一个变量,就相当于将原来的信号右移延迟。

2.信号加噪声

    利用y = awgn(x,snr)将白高斯噪声添加到向量信号x中。标量snr指定了每一个采样点信号与噪声的比率,单位为dB。

3.基本互相关时延估计

    由于源距离接收阵一定距离且方向非垂直,两个阵元间由于声程差必然存在到达时延差。设两个接收信号分别为x1和x2:

x1(t)=s(t)+n1(t)

x2(t)=s(t-D)+n2(t)

时延估计即估计其中的D值。

时延估计中常使用最大似然估计,因为其在这里具有无偏、有效和一致性三大性质。而时延估计的最大似然估计经过推导可以发现其是一个相关器。对于互相关函数,其定义为:

理论上在时刻D时,两阵元信号相似度最高,此时是相关器峰值位置。对两路信号作互相关之后再进行峰值检测即可得到时延D。

y=real(xcorr(s2,s1));

y=y(abs(length(s1)-length(2)+1):end);%消除xcorr函数自动补零的影响

ty=(0:length(y)-1)/fs;

    figure

    plot(ty,real(y));

[m1,ND1]=max(real(y));

delay1=(ND1-length(s1)-1)/fs;

因此,基本互相关求时延的缺点为基本互相关的峰值不够尖锐,周围旁瓣或者噪声幅值很大,当信噪比下降时时延估计成功率明显下降。同时时延估计精度受采样率的影响也很大,当采样率不够高时,相关峰值可能位于两次采样点之间,从而漏掉峰值,精度受限。

本次实验完整Matlab实现如下:

%对原始信号做延时

fs = 1000;

gentime = 1;

t = (0:1:gentime*fs-1)/fs;

y1 = rectpuls(t-0.2,0.1);

figure;

subplot(411);plot(t,y1);legend('原信号');

delayNum = 0.1*fs;

y2 = [zeros(1,delayNum) y1];

y2 = y2(1:length(t));

subplot(412);plot(t,y2);legend('延迟信号');

% 信噪比和信号指定功率

snr=20;

px_dBW=0;

% 调用awgn函数直接计算

h1=awgn(y1,snr,px_dBW);

subplot(4,1,3);plot(t,h1);legend('原始信号加噪声');

% 调用randn函数产生噪声序列再叠加

pn_W=10^((px_dBW-snr)/10);

n=sqrt(pn_W)*randn(1,length(y2));

h2=y2+n;

subplot(4,1,4);plot(t,h2);legend('延迟信号加噪声');

%计算互相关函数

[corr,lag]=xcorr(y1,h2);

% 找到延迟

[~,I] = max(abs(corr));

delay = lag(I);

delay_time = delay/fs; % 延迟时间

% 显示结果

fprintf('Delay between y1 and h2 is %f seconds.', delay_time);

% 绘制互相关函数图像

figure;

subplot(2,1,1);

plot(t, y1, 'b', t, h2, 'r');

xlabel('时间(s)');

ylabel('波幅');

title('原始信号');

legend('原始信号y1', '加噪声的延迟信号h2');

subplot(2,1,2);

plot(lag, corr);

xlabel('延迟');

ylabel('相关');

title('原始信号y1和加噪声的延迟信号h2的互相关');

  • 实验结果和分析

如下图所示,信号时长为1秒,采样频率为1000,实现对一个宽度为0.1的距离门信号进行0.1s的时延并加入高斯白噪声。

如下图所示,可以观察到信号加噪声后的时延仍为1s,通过互相关计算,也为1s。

…………………………………………………………………………………………………………………

五、实验结论:

  1. 基本互相关法是经典的时延估计方法,通过信号的自相关函数滞后的峰值估计信号之间延迟的时间差。但是对噪声的处理不好。
  2. 基本互相关的峰值不够尖锐,周围旁瓣或者噪声幅值很大,当信噪比下降时时延估计成功率明显下降。
  3. 基本互相关发时延估计精度受采样率的影响也很大,当采样率不够高时,相关峰值可能位于两次采样点之间,从而漏掉峰值,精度受限。

………………………………………………………………………………………………………………………………………………………

  • 实验感悟

        MATLAB中有丰富的图形处理能力,提供了绘制各种图形、图像数据的函数。他提供了一组绘制二维和三维曲线的函数,他们还可以对图形进行旋转、缩放等操作。MATLAB内部还包含丰富的数学函数和数据类型,使用方便且功能非常强大。通过对MATLAB的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计算及符号运算的学习,初步掌握了MATLAB的实用方法。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/756210
推荐阅读
相关标签
  

闽ICP备14008679号