首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >自适应滤波算法(一):匹配滤波器

自适应滤波算法(一):匹配滤波器

作者头像
FPGA技术江湖
发布2026-03-23 20:45:07
发布2026-03-23 20:45:07
580
举报

概述

自适应滤波理论在统计信号处理中占据非常重要的地位,在通信、控制、雷达等领域获得广泛应用。自适应滤波器的基本目标,是通过某种方式对参数θ(k)进行调整,使滤波器输出尽可能使得包含参考信号的某个特定目标函数达到最小化。

在实时信号处理中,我们希望滤波器在实现滤波、平滑或预测等任务中,能够跟踪和适应系统或环境的动态变化,这需要滤波器的参数可以随时间做简单的变化或更新,因为复杂的运算不符合实施快速处理的要求。

自适应滤波算法】系列将介绍常用的匹配滤波器、维纳滤波器、Kalman滤波、LMS算法和RLS算法。参考书籍推荐《现代信号处理》和《自适应滤波算法与实现》。

我们从最基础的匹配滤波器开始。

1. 匹配滤波器的概念

在滤波器设计中,遵循两种最优设计准则:

  1. 使滤波器的输出达到最大的信噪比,称为匹配滤波器;
  2. 使输出滤波器的均方估计误差为最小,称为Wiener滤波器。

考虑接收信号模型:

线性连续时间滤波器
线性连续时间滤波器

线性连续时间滤波器

从接收机的角度看,接收信号是已知发送信号经过信道传播后得到,为信道传播过程中引入的零均值平稳噪声。在实际系统中,我们希望进入基带的接收信号信号质量尽可能好,于是通过设计滤波器的冲击响应函数,使得滤波器输出的信噪比最大。

根据信号与系统的知识,我们可以得到滤波器的输出可以表示为:

滤波器在时刻的输出信噪比定义为:

≝在时刻的瞬时功率的平均功率

根据Parseval定理

则输出信号可以写作:

于是输出信号在的瞬时功率:

输出噪声的平均功率:

令是加性噪声的功率谱密度,则输出噪声的功率谱密度为:

于是,输出噪声的平均功率可以写成:

因此,得到信噪比:

再应用柯西-施瓦茨不等式

得到:

将上式中等号成立时的滤波器传递函数记作,并利用柯西-施瓦茨不等式取等号的条件,则有:

于是,我们可以得到输出最大信噪比为:

在白噪声情况下,其功率谱密度ω,故滤波器传递函数可以简化为:

因此有,当滤波器达到最大输出信噪比时,滤波器的幅频特性与信号的幅频特性相等。

通过对上式两边做IFFT,得到:

即:匹配滤波器的冲激响应是信号的一镜像信号。

2. 匹配滤波器的性质

匹配滤波器在很多工程问题中有重要应用,其性质概括如下:

性质1:在所有线性滤波器中,匹配滤波器输出的信噪比最大,且,与输入信号的波形以及加性噪声的分布特性无关。

性质2:匹配滤波器输出信号在时刻的瞬时功率达到最大。

性质3:匹配滤波器输出信噪比达到最大的时刻,应该选取等于原信号的持续时间T。

性质4:匹配滤波器对波形相同而幅值不同的时延信号具有适应性。

性质5:匹配滤波器对频移信号不具有适应性。

局限性:在匹配滤波器中,接收机必须已知并存储信号的精确结构或功率谱,并且积分区间必须与信号取非零值的区间同步,但显然在实际系统中,原信号在传输过程中发生传播延迟,并伴随相偏和频偏,信号区间和积分区间无法精确同步而造成误差,匹配滤波难以实现。

3. 匹配滤波器示例

MATLAB示例: 在原点放置一个各向同性天线元件(0;0;0)。然后,在距离发射机约7公里处放置一个RCS(雷达截面积)为1平方米、不动的目标,位置为(5000;5000;10)。将工作(载波)频率设置为10 GHz。模拟单基地雷达的发送和接收,计算发射机到目标的距离和角度。

产生一个时长25us、脉冲频率为10 kHz的矩形脉冲波形。利用雷达方程确定探测目标所需的峰值功率。该目标在发射机工作频率和增益的最大不模糊距离下,RCS为1平方米。信噪比基于非相干检测期望的误检率。

在接收端收集回波,并通过匹配滤波器提升信噪比。

matlab示例代码:

代码语言:javascript
复制
antenna = phased.IsotropicAntennaElement('FrequencyRange',[5e9 15e9]);
transmitter = phased.Transmitter('Gain',20,'InUseOutputPort',true);
fc = 10e9;
target = phased.RadarTarget('Model','Nonfluctuating',...
   'MeanRCS',1,'OperatingFrequency',fc);
txloc = [0;0;0];
tgtloc = [5000;5000;10];
transmitterplatform = phased.Platform('InitialPosition',txloc);
targetplatform = phased.Platform('InitialPosition',tgtloc);
[tgtrng,tgtang] = rangeangle(targetplatform.InitialPosition,...
   transmitterplatform.InitialPosition);

waveform = phased.RectangularWaveform('PulseWidth',25e-6,...
   'OutputFormat','Pulses','PRF',10e3,'NumPulses',1);
c = physconst('LightSpeed');
maxrange = c/(2*waveform.PRF);
SNR = npwgnthresh(1e-6,1,'noncoherent');

lambda = physconst('LightSpeed')/target.OperatingFrequency;
Ts = 290;
dbterms = db2pow(SNR - 2*transmitter.Gain);
Pt = (4*pi)^3*physconst('Boltzmann')*Ts/waveform.PulseWidth/target.MeanRCS/(lambda^2)*maxrange^4*dbterms;


transmitter.PeakPower = Pt;

radiator = phased.Radiator('PropagationSpeed',c,...
   'OperatingFrequency',fc,'Sensor',antenna);
channel = phased.FreeSpace('PropagationSpeed',c,...
   'OperatingFrequency',fc,'TwoWayPropagation',false);
collector = phased.Collector('PropagationSpeed',c,...
   'OperatingFrequency',fc,'Sensor',antenna);
receiver = phased.ReceiverPreamp('NoiseFigure',0,...
   'EnableInputPort',true,'SeedSource','Property','Seed',2e3);
mfilter = phased.MatchedFilter(...
   'Coefficients',getMatchedFilter(waveform),...
   'GainOutputPort',true);
   
   wf = waveform();
   
   [wf,txstatus] = transmitter(wf);
   
   wf = radiator(wf,tgtang);
   
   wf = channel(wf,txloc,tgtloc,[0;0;0],[0;0;0]);
   wf = target(wf);
   
   wf = channel(wf,tgtloc,txloc,[0;0;0],[0;0;0]);
   
   wf = collector(wf,tgtang);
   
   rx_puls = receiver(wf,~txstatus);
[mf_puls,mfgain] = mfilter(rx_puls);

Gd = length(mfilter.Coefficients)-1;

mf_puls=[mf_puls(Gd+1:end); mf_puls(1:Gd)];
subplot(2,1,1)
t = unigrid(0,1e-6,1e-4,'[)');
rangegates = c.*t;
rangegates = rangegates/2;
plot(rangegates,abs(rx_puls))
title('Received Pulse')
ylabel('Amplitude')
hold on
plot([tgtrng, tgtrng], [0 max(abs(rx_puls))],'r')
subplot(2,1,2)
plot(rangegates,abs(mf_puls))
title('With Matched Filtering')
xlabel('Meters')
ylabel('Amplitude')
hold on
plot([tgtrng, tgtrng], [0 max(abs(mf_puls))],'r')
hold off
   
接收脉冲匹配滤波
接收脉冲匹配滤波

接收脉冲匹配滤波

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA技术江湖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 1. 匹配滤波器的概念
  • 2. 匹配滤波器的性质
  • 3. 匹配滤波器示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档