当前位置:首页 > 财经频道 > 正文内容

自适应滤波算法介绍之维纳滤波器的基本原理和应用示例

聚亿千财2026-01-08财经频道3811

以下文章来源于FPGA算法工程师,作者18线工程师

前言

前面我们介绍了匹配滤波器,本文将介绍维纳滤波器。首先我们回顾了维纳滤波的主人公Norbert Wiener,然后描述了维纳滤波的基本原理和推导,最后给出一个简单的维纳滤波应用。

1. 维纳生平

维纳滤波的主人公便是Norbert Wiener,美国应用数学家,控制论的创始人。

1894年11月26日,诺伯特·维纳(Norbert Wiener)出生在美国密苏里州哥伦比亚市的一个犹太人家庭。维纳成名后出版过两部自传,第一本是1953年的《昔日神童》,记述了自己一些童年往事;第二本是1956年的《我是一个数学家》,主要说的是他后半生的事情。

1913年是青年维纳学术成绩灿烂斐然的一年。他以一篇哲学论文赢得哈佛大学授予Bowdoin奖,并申请取剑桥大学留学,师从逻辑哲学大师罗素(Bertrand Russell),维纳接收老师的建议,接收数学方面的训练,选读了许多数学课程,接受了哈代(G.H. Hardy)等顺序额大师的直接指导。

维纳原计划在剑桥访学一年,但第二学期罗素要去哈佛讲学,便建议他到德国哥廷根大学去修读希尔伯特(David Hilbert)和朗道(Edmund Landau)的课程。

在哥廷根大学,维纳修完了朗道的一门代数群论课,并在希尔伯特指导下研究微分方程。在哥廷根所受的教育使维纳受益非浅。

事实上,正是剑桥和哥廷根让神童维纳转变成一名青年数学家。维纳在其后五十多年的科学生涯中,先后涉足哲学、数学、物理学、工程学和生物学,在各个领域中都取得了丰硕成果,成为学识渊博、多才多艺的科学巨匠。回首往事时,他常常感激罗素并十分怀念剑桥与哥廷根。

第一次世界大战爆发后他从德国返回美国,于1919年到麻省理工学院(MIT)任职讲师,从此开始了他的学术生涯,并在那里工作和生活直至去世。

1920年,维纳将法国数学家Fréchet关于极限和微分的广义理论推广到矢量空间(维纳称之为“Differential Space”),并给出了一套完整的公理集合,后来被称为维纳空间理论。维纳的研究成果为冯·诺依曼(John von Neumann)在1927年提出希尔伯特空间中的算子公理方法打下了基础。

维纳是第一个从数学上严格而深刻地研究随机布朗运动的数学家。1921年,他发表了一篇关于布朗运动的重要论文,出发点是函数空间中的测度论。1923年,他第一次给出了随机函数的严格定义,并指出它是布朗运动的理论模型。其后,数学文献上把定义在连续函数空间中的一种描述布朗运动的测度称为维纳测度,相应的随机过程称为维纳过程,在这个测度上的积分称为维纳积分。

1923-1925年间,维纳对数学上的位势理论作出了重要贡献。1926年,维纳再次访学来到德国哥廷根和英国剑桥。随后几年间,他在调和分析的研究上有了重大突破。维纳从物理学借来各种函数作为调和分析的工具,把它们写成Fourier变换的形式,然后把它们同通讯理论联系起来,并获得了现代光谱分布。

1929年,维纳还指导当时在贝尔电话公司实习的MIT博士生李郁荣(Yuk-Wing Lee)研制了“Lee—Wiener网络”并获得一项专利。

1932年,维纳与天文学家霍普夫(Eberhard Hopf)合作,把霍普夫关于辐射平衡态的研究推广到一类给定在半无穷区间上带差核的奇异积分方程。此类方程后来被称为维纳—霍普夫方程。

1935-1936年间,维纳接受了已学成回国在清华大学电机系任职的李郁荣的建议和推荐,并获得了北京清华大学校长梅贻琦以及数学系主任熊庆来的邀请,来到了北京,在清华大学同时出任数学系和电机系客座教授。期间,他在数学系和李郁荣合作研究Fourier变换数学滤波器,于是后来有了维纳滤波器,这项研究还让他获得了一项发明专利。维纳滤波器是当时线性滤波和预测理论中最为重要的科学成果,成为后来通信理论及其工程应用发展的关键。他又和李郁荣一道与工学院院长、另一名MIT博士海归顾毓琇(Yu-Hsiu Ku)合作,研究模拟计算机的数字化。

1940年,基于在清华与李郁荣和顾毓琇的合作研究成果,维纳给罗斯福总统的科学顾问范内瓦·布什(Vannevar Bush)写了一封长信,提出了设计新型电子计算机的几条原则:不采用模拟程式而利用数字程式;使用电子元件而非机械部件;采用二进制而不是十进制;在机内存放数据和计算表格,等等。布什当年在MIT任职,是李郁荣的博士导师。1944年,布什撰写了美国科学政策的报告:《科学:无尽的前沿》。

第二次世界大战期间,维纳和俄罗斯数学家柯尔莫哥洛夫(A. N. Kolmogorov)同时独立地发展了平稳时间序列估计理论。1959年,在维纳的倡导下MIT建立了世界上第一个人工智能研究小组和实验室,开始了早期智能机器人的研究。

1960年,维纳应邀参加了IFAC(International Federation of Automatic Control)在莫斯科举行的第一届国际会议,以新兴科学控制论创始人的姿态参会。而在1954年,钱学森的《工程控制论》英文版于1954年由美国麦格劳-希尔集团出版,中文版1958年由科学出版社发行,该书将控制论应用于工程技术领域,建立受控工程系统分析、设计与运行的理论体系,提出系统辨识、最优控制、容错系统等核心理论。

维纳一生发表论文240多篇,著作14本,内容涵盖数学、物理、工程、生物和哲学等多个领域。

1964年1月,维纳荣获由美国总统约翰逊颁发的国家科学勋章,表彰他“在纯粹数学和应用数学方面并且勇于深入到工程和生物科学中去的多种令人惊异的贡献以及在这些领域中具有深远意义的开创性工作”。同年3月18日,维纳在瑞典斯德哥尔摩访问时不幸病世,享年70岁。

维纳一生发表论文240多篇,著作14本,内容涵盖数学、物理、工程、生物和哲学等多个领域。维纳参与了香农(Claude Shannon)信息论的开创工作。维纳从直流电路出发来理解和诠释信息论,把消息看作可测事件的时间序列并用统计方法来处理通信问题,在数学上采取平稳随机过程理论及各种变换技术进行研究。他在信息论方面与香农并行工作时亦有合作。可是,与香农相反,在信息论的研究中维纳坚持走模拟而非数字路线,即使用连续而非离散的数学理论和工具,最后没有成功。

维纳阐明了现代系统控制思想和反馈调节原理。第二次世界大战开始后,维纳参与了火炮控制研究,进而建立了Cybernetics理论。

2 维纳滤波基本原理

维纳发表的《控制论》和《平稳时间序列的外推、内插和平滑问题》,建立了维纳滤波理论。维纳滤波器的求解,要求知道随机信号的统计分布规律(自相关函数或功率谱密度),得到的结果是封闭公式。采用谱分解的方法求解,简单易行,具有一定的工程实用价值,并且物理概念清楚,但不能实时处理,维纳滤波的最大缺点是仅适用于一维平稳随机信号。

现在考虑使用滤波器h(t)对接收/观测信号y(t)=x(t)+n(t)对原信号x(t)进行估计:

wKgZO2leCiGAVgnQAAAaHLRl5oo220.png

由于估计误差e(t)=x(t)-x(t)是随机变量,不适合作为估计器的性能评价标准,考虑采用均方误差作为测度,衡量滤波器的性能。

均方误差可表示为:

当均方误差J最小时,即为最小均方误差MMSE准则。于是,线性最优滤波器的冲激响应为:

为了真正实现维纳滤波,需要满足系统是线性的,并且是离散时间(便于数字系统实现)的因果系统。

考虑线性离散系统:

3ebf83a0-e83f-11f0-8c8f-92fbcf53809c.png

线性离散时间滤波器

输入信号序列x(n),滤波器冲激响应序列w(n),期望信号序列d(n),y(n)为滤波器输出的估计值,估计误差e(n)。估计误差表示为e(n)=d(n)一y(n)。

要设计出最优滤波器,信号处理领域的前辈门总结出MMSE统计优化准则:使估计误差均方值最小化的统计优化准则。

那么怎么去量化这一统计准则,需要满足什么条件?

考虑上图所示的滤波器输出,有:

估计误差:e(n)=d(n)一y(n)。

采用MMSE准则设计最有滤波器,定义代价函数为均方误差:

wKgZO2leCt-ALN6QAAARdBzzgiU208.png

在通信系统中,调制波形一般是IQ复数信号,滤波器抽头系数wk一般也是复数。这里我们将抽头系数wk定义实部+虚部的形式:

wKgZO2leCuyAfZHVAAALd9JlWN8884.png

为了求解代价函数j(n)的最小值,需要用到微分计算方法,求导。

定义梯度算符:

wKgZO2leCxuAUgI2AAAQVL68-H0665.png

于是,对代价函数j(n)计算共轭梯度,有:

wKgZO2leCy-AHqiQAAAeJHMZlwE337.png

我们知道,某个曲线函数在斜率为0时,可取得极值。为了使得代价函数j(n)最小,我们需要wKgZPGleC06AXZWwAAAGRTfXwFc186.png

于是,得到:

wKgZPGleC12ASRDTAAAn_ZCrvs4109.png

求出偏导数:

wKgZO2leC2yAcsPzAAA3bNC8Q-o328.png

于是我们可以得到

wKgZPGleC3WAB5IVAAAP9rrPPGM276.png

令eopt(n)表示滤波器在最有条件下的估计误差,于是

wKgZO2leC4GAAKuPAAAVzw3dOgc064.png

我们可以看到,代价函数最小化的充要条件是估计误差eopt(n)与输入信号x(n)正交,这便是著名的正交性原理。

但到这一步,我们依然没有解出滤波器的系数w(n)。

进一步,我们可以得到:

wKgZO2leC7qAaiTTAAAnCRorvE4180.png

令yopt(n)是在最小均方误差下滤波器的输出,则正交性原理等价为:

wKgZPGleC8SAI7iLAAAMBqJTTeY096.png

这便是正交性原理引理。

再根据正交性原理,我们可以得到:

wKgZO2leC-WAK9P-AAAedPT3aQk820.png

w(opt,i)表示最优滤波器响应的第i个系数,进一步展开得到:

wKgZO2leC_OAeRrMAAAdNqdyxMo851.png

上式中,数学期望项E{x(n一k)x*(n-i)}代表输入信号在滞后i-k的自相关函数,记为:

wKgZPGleDDyAd7GGAAARH1xlsGk520.png

数学期望项E{x(n一k)x*(n-i)}代表输入信号x(n一k)与期望信号d(n)在滞后-k的互相关函数,记为:

wKgZO2leDLqAEbPyAAAP9zQGQdo571.png

于是我们可以得到著名的Wiener-Hopf方程:

wKgZO2leDM2ANV4GAAAWF5SK7dE635.png

观察上式,要求解滤波器系数w(opt,i),无穷多个方程求解,是不可能实现的。

于是,工程师们从设计实现的角度出发,假设滤波器系数为有限的M个,则滤波器的输出可表示为:

这时候,Wiener-Hopf方程可以简化为M个齐次方程。

定义输入信号的自相关矩阵为:

wKgZO2leDSSAPZKgAAAMSh_za2M000.png

输入信号与期望信号的互相关向量:

wKgZPGleDS-AOFz_AAAKE1hz5IE792.png

于是,Wiener-Hopf方程的矩阵表达式可以写为:

wKgZPGleDTmAMXCWAAAFj4Mg37Q188.png

Wopt即为M阶的维纳滤波器抽头系数。

到此刻,我们虽然得到了维纳滤波器系数的表达式,可是在实际情况下,我们可能无法提前得到期望信号d(n)。

进一步,我们根据正交性原理的引理,得到:

wKgZO2leDWCAF-5tAAAk_Ky7a-o189.png

利用Z变换,得到

wKgZPGleDWyAXKF0AAAOTLIUrkE193.png

考虑输入信号与噪声不相关,可以得到

wKgZO2leDXqANf84AAARm4aG6aM604.png

在平稳条件下,我们可以转换到频域进行计算。

3 维纳滤波的应用

虽然理论上,维纳滤波的推导得到了最优线性滤波器的解,但由于信号的随机性和信号谱分解困难,实际应用中比较困难。一些比较简单的应用,如图像去噪,通信中对于非高速移动场景的信道估计可用于滤波去噪和抑制干扰。

下面举例,在频域通过维纳滤波对正弦信号进行去噪。

%Frequency domain Wiener filtering
% sine signal + noise
fx=1; %signal frequencyinHz
wx=2*pi*fx; %signal frequencyinrad/s
fs=60; %sampling frequencyinHz
tiv=1/fs; %time interval between samples;
t=0(3-tiv); %time intervalsset
x=sin(wx*t); %signal dataset
Nx=length(x);
v=randn(1,Nx); %normal noise
y=x+v; %sine+noise
%Wiener computations
X=fft(x); %Fourier transform of x
Sxx=abs(X).^2; %Sxx
V=fft(v); %Fourier transform of v
Svv=abs(V).^2; %Svv
WH=Sxx./(Sxx+Svv); %Fourier transform of the Wiener filter
Y=fft(y); %Fourier transform of y
fly=real(ifft(Y.*WH)); %apply the Wiener filter
%display---------------------------
figure(1)
plot(t,y,'k'); %plots figure
axis([0 3 -3.5 3.5]);
xlabel('seconds'); title('sine+noise signal');
figure(2)
plot(t,fly,'k'); %plots figure
axis([0 3 -3.5 3.5]);
xlabel('seconds'); title('filtered signal');

3f1d67fe-e83f-11f0-8c8f-92fbcf53809c.png

加噪正弦信号

3f7e2e5e-e83f-11f0-8c8f-92fbcf53809c.png

维纳滤波后的信号

关于维纳滤波,就介绍到这里,下一篇,我们将介绍更为实用的Kalman滤波。