⛄一、自适应滤波法微弱信号检测
1 NLMS自适应滤波
1.1 NLMS自适应滤波基本原理
最小均方 (LMS) 误差自适应滤波器[4]是将输入信号x (t) 通过系数可调的加权滤波器后, 与期望的参考信号d (t) 比较, 得到误差信号e (t) 。采用特定的滤波算法调节滤波器权系数w (t) , 最终使误差信号的均方差E[e2 (t) ]达到最小值, 滤波器的输出更接近期望参考信号, 达到最优滤波。由LMS可以推出滤波器权系数的递推公式为
归一化LMS (NLMS) 算法[5,6,7]是一种变步长的LMS算法, 比LMS算法具有更快的收敛速度。它在滤波的初始阶段, 步长较大, 收敛速度较快;当算法收敛后, 减小步长μ, 以保证较高的收敛精度。由NLMS可推出滤波权系数递推公式为
式中, γ是为了避免xT (t) x (t) 过小而设定的参数, 通常情况下的取值范围为0≤γ≤1。
1.2 原始信号的预处理
由自适应滤波的基本原理可知, NLMS自适应滤波器的实现需要已知输入信号的期望信号作为参考信号。但环境声音去噪处理中, 很难预先已知目标声音谱信息来构建参考信号, 因此常规的自适应滤波器很难满足要求。由于目标信号并非白噪声, 而是由液体的振动产生, 有一定的振动规律。因此本文采用一种以自身原始信号作为滤波的期望信号, 使其既为原始信号也为期望信号的方法, 进行自适应滤波。滤波后的误差时域图如图2所示。
从图2中可以看出, 在误差时域中, 目标信号之前的干扰信号被削弱, 而目标信号却得以加强, 起到了抑制干扰、突出目标特征的作用。滤波后以误差信号的时域幅值代替原始信号的时域幅值进行下一步的特征分析。
3 端点检测
端点检测的目的就是在复杂的应用环境下的信号流中分辨出干扰信号和目标信号, 并确定目标信号的开始及结束。主要通过短时能量及瞬时过零率对目标信号进行检测, 当出现的信号满足目标信号的各项特征, 则其被认为是目标信号, 即目标信号的开始端。
3.1 检测识别基本流程
检测识别目标信号时, 同时对滤波后的信号进行短时能量及瞬时平均过零率的判别。当被检测信号均超过两者的门限后, 才被认定为疑似信号。对于疑似信号, 将继续进行时间门限的判别, 只有其超过能量及过零率门限的时间均大于已设定的时间门限, 才被认为是目标信号 (图3) 。
3.2 短时能量门限
首先用短时能量进行判别, 并设定一个高门限, 当信号能量超过此门限后, 进行下一步持续时间门限判断。检测时, 要对声音信号进行加窗分帧处理, 如果窗的长度过大, 在提高检测速度的同时导致识别率的下降;如果窗的长度过短, 在提高检测识别率的同时增加了检测的时间。因此, 采用动态窗长短时能量端点检测方法, 在检测到疑似目标信号时使用大窗长, 出现疑似目标信号后, 改用小窗长。将短时能量[8,9,10]定义为
图3 基本流程图
图4 (a) 为信号在时域内幅度的变化情况, 第5 s处附近有误导噪声, 第12 s处目标信号音 (油爆裂声) 开始出现, 这两处波形呈现明显的尖锐增大。图4 (b) 为能量随时间推移的变化情况, 虽采用帧数计数, 但其时间进度与图4 (a) 的时间进度完全对应。
根据图4考虑设置过渡段的时间门限, 算法在检验到有疑似目标信号时开始计时, 若信号短时能量值没能在设定的时间门限范围内持续, 则认为其为无效信号;若超过时间门限, 则认为信号有效。利用这一能量特性可以实现对信号的辨识, 辨识的精确度高于传统的幅度辨识。但仅凭这个特征判断目标信号还不可靠, 还需要对疑似信号作进一步的识别与确认。
3.3 瞬时平均过零率门限
过零是指信号波形穿越时间轴或零值线, 对于离散时间信号而言, 就是相邻的取样值符号改变。平均过零率即为单位时间 (或单位样本) 内过零的次数[11,12]。计算一个声音信号帧内单位时间越过零线的平均次数, 可以得出其瞬时平均过零率或瞬时平均过零数。当信号瞬时平均过零率超过此门限后, 进行下一步持续时间门限判断。瞬时平均过零率的计算方法可表示为
图5 (a) 为信号在时域内幅度的变化情况, 第5 s处附近有误导噪声, 第12 s处目标信号音 (油爆裂声) 开始出现, 这两处波形呈现明显的尖锐增大。图5 (b) 为信号的瞬时过零率统计, 虽采用帧数计数, 但其时间进度与图5 (a) 的时间进度完全对应。
同样设置时间门限与过零率门限, 通过短时能量判别的信号, 可进一步进行过零率判别。若信号没能在设定的时间门限范围内持续, 则认为其为无效信号;若超过时间门限, 则认为信号有效。
⛄二、部分源代码
% RANDOM PROCESS_NOISE MODULE
clear all
close all
n=100000;
fs=n;
t=0:1/fs:(fs-1)/fs;
yss=1sin(2pi1000t);
% 高斯色噪声
x1=normrnd(0,3,1,n);
p=0.5;
f0=0.05;
a1=-2pcos(2pif0);
a2=p^2;
x2=zeros(1,n);
for i=3:1:n;
x2(i)=a1x2(i-1)-a2x2(i-2)+x1(i);
end
%散粒噪声
lamda=2;Tmax=10000;
i=1;T(1)=random(‘exponential’,lamda);
while(T(i)<Tmax)
T(i+1)=T(i)+random(‘exponential’,lamda);
i=i+1;
end
T(i)=Tmax;x=0:1:i;w(1)=0;
for p=1:i
w(p+1)=T§;
end
%length(w)
%length(x)
figure(1)
stairs(w,x)
ylabel(‘事件发生次数’);
xlabel(‘事件发生时间’);
title(‘泊松过程(lamda=2,Tmax=50)’);
fs=100000;
t=(1/fs:1/fs:1)Tmax;
a=0.1;
W=fs/Tmaxw;
W=floor(W);
n3=zeros(length(W)-1,fs);
for k1=2:1:length(W);
k=W(k1);
tn=1:1:fs;
yp=exp(-(tn-k)*a);
for kp=1:1:k-1
yp(kp)=0;
end
n3(k1-1,:)=yp;
end
x3=zeros(1,fs);
for k2=1:1:fs
x3(1,k2)=sum(n3(:,k2));
end
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]司兵,吴铭.双稳随机共振在弱信号检测中的应用[J].四川兵工学报. 2012,33(04)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除