自适应滤波器(匹配滤波器)
1、定义
从噪声中提取信号,得到不受干扰影响的真正信号,使滤波器输出信噪比在某一特定时刻达到最大,由此导出的最佳线性滤波器称为匹配滤波器;
(补充:滤波器输出的信号波形与发送信号波形之间的均方误差最小,称为维纳滤波器,感兴趣的读者可以留言,后面我会补一期)
2、滤波器的分类
按照不同的分类标准分为:
线性滤波器、非线性滤波器
FIR滤波器、IIR滤波器
时域滤波器、频域滤波器、空域滤波器
3、最优滤波
所谓最优是在某种标准下系统性能达到最佳。
相对性:在某种准则下的最优系统,在另外一种准则下就不一定是最优的。
等价性:在某些特定条件下,几种最优准则也可能是等价的。
4、匹配滤波器的推导:(耐心观看,10min必懂)
5、匹配滤波器的仿真分析
clear;clc;close all;
%CW信号 匹配滤波
%定义信号参数
fo=10e3; %中心频率
fs=100e3; %采样频率
T=0.05; %信号长度,单位为s
N=T*fs; %采样点数
t=(0:N-1)/fs; %信号时间序列
s1=sin(2*pi*fo*t);%正弦信号
E_s1=sum((real(s1)).^2); %信号的能量
%定义噪声参数
T1=0.07;
N1=T1*fs;%噪声要较信号长,适合观察
t1=(0:N1-1)/fs; %信号时间序列
mu=0;sigma=sqrt(2.5);%均值为0,方差为2.5 无直流量
n=normrnd(mu,sigma,[1,7000]);%生成随机序列
E_n1=sum((real(n)).^2);%噪声的能量
SNR1=20;%信噪比
s1_in=[zeros(1,1100),s1(1:N),zeros(1,900)];%将信号与噪声统一长度,以便将噪声添加到信号中
A_s1_SNR1=sqrt(E_s1/(10^(SNR1/10)));
n3_SNR1_s1=n/sqrt(E_n1)*A_s1_SNR1;%与信号达成谱级信噪比SNR1的噪声
s1_SNR1_out=s1_in+n3_SNR1_s1;%正弦信号加入噪声后的输出信号
figure(1)
subplot(221)
plot(t1,s1_SNR1_out);title('噪声+信号时域波形');
xlabel('时间/s');ylabel('幅度');
nn = 2^nextpow2(N1); % 进行FFT变换时的采样点数,采样点数越大,分辨的频率越精确,N>=L,超出的部分信号补为0
Y = fft(s1_SNR1_out,nn)/nn*2; % 除以N乘以2才是真实幅值,N越大,幅值精度越高
f = fs/nn*(0:1:nn-1); % 频率序列
P = abs(Y); % 幅值处理
%%%%%%%%%%%绘制频谱图%%%%%%%%%%%%
subplot(222)
plot(f(1:nn/2),P(1:nn/2)); % 函数fft返回值的数据结构具有对称性,因此只取前一半
xlabel('频率/Hz'); % 设置x轴标签
ylabel('幅值 '); % 设置y轴标签
title('频谱'); % 设置标题
%% 时域匹配滤波
% conj()函数用于计算复数的共轭值;
% fliplr()函数将数组从左到右翻转.
ht = conj( fliplr(s1_SNR1_out) ); %时域匹配滤波为发射信号时间反褶再取共轭:h(t)=s*(-t)
subplot(223);
plot(-1*t1, ht);title('h(t)时域波形');
xlabel('时间/s');ylabel('幅度');
ss1 = conv(s1,ht); %信号经过匹配滤波器后的输出(时域卷积)
N2 = N+N1-1 ; %线性卷积后信号长度变为 N1+N2-1
tt1 = linspace( 0 , N2/fs , N2);
subplot(224)
plot( tt1 , ss1 ),xlabel('t /s'),ylabel('相关峰'),title('时域匹配滤波');
仿真结果:成功寻找与给定信号或特定模式相关的特定时间点或位置