volterra滤波器知多少
volterra滤波器知多少
- 前言-volterra级数
- 从级数到滤波器,其实就是一个公式的不同理解
- 参考
- 三级目录
前言-volterra级数
\hspace{0.5cm}意大利数学家Volterra在1880年提出的一种泛函级数,用以推广Taylor级数,适用于研究积分方程和非线性系统。它的数学表达式是一个无穷级数,其中包含输入信号的多项式项,每一项都与输入信号在不同时间点上的值有关,反映了系统的非线性和记忆特性。Volterra级数的每一项称为内核(kernel),系数用w表示,不同的阶数L1, L2, …, Lm代表了系统的不同非线性程度和记忆长度。由于volterra级数的表达式是基于输入信号的幂次方,因此它能够捕捉到非线性系统的多项式结构,但不是所有的非线性系统都能用volterra级数准确表示。在实际应用中,volterra级数的阶数需要根据系统的复杂程度和计算资源来选择,阶数过高会导致计算复杂度增加,而阶数过低则可能导致逼近不准确。三阶volterra滤波器是volterra级数的一种特例,适用于大多数通信系统中的非线性均衡,但随着阶数的增加,内核的数量呈指数级增长,给计算带来了挑战。volterra级数在工程应用中面临收敛性问题,即并非所有的非线性系统都能找到收敛的volterra级数表达式,这限制了它的实际应用范围。
以上来自ai的回答,现在大语言模型的冲击,越来越不愿意写blog笔记了,信息来得容易,会让人变得越来越懒惰。
\hspace{0.5cm}经典的百度百科(翻译自维基百科)定义为“沃尔泰拉级数”,沃尔泰级数是非线性行为中的一种模型,类似于泰勒级数。它不同于泰勒级数的地方在于能够捕捉记忆效应。在非线性系统中,泰勒级数能够用于对输入的响应的逼近,如果在特定的某个时间内,输出是严格取决于输入的。对于沃尔泰级数,非线性系统的输出取决于任何其他的时间内的输入。这种属性使得其有能力捕捉一些器件的记忆效应,比如电容和电感。
沃尔泰级数被广泛应用于药物医学和生物学,尤其是神经科学。它也被应用于电气工程学科中内部调制失真的建模。在数学上,沃尔泰级数表示功能动态的拓展、非线性、时不变泛函。它被频繁的应用在系统识别。沃尔泰级数,即为无穷个多维卷积的和。沃尔泰级数可以通过两种不同的视角来理解:其中一种考虑两个实函数之间的映射操作,另一种考虑实函数往实数上的映射操作。由于假设的时不变系统,所以后者更为常用。
连续时间领域,一个连续的时不变系统,输入x(t),输出y(t)即为沃尔泰级数展开:
y(t)=h0+∑n=1N∫ab⋯∫abhn(τ1,⋯,τn)∏j=1nx(t−τj)dτjy(t) = h_0 + \sum_{n = 1}^{N} \int_{a}^{b} \cdots \int_{a}^{b} h_n(\tau_1, \cdots, \tau_n) \prod_{j = 1}^{n} x(t - \tau_j) d\tau_j y(t)=h0+n=1∑N∫ab⋯∫abhn(τ1,⋯,τn)j=1∏nx(t−τj)dτj通常通过调节合适的输出量级,常数ho可以调节为0。函数hn称为第n阶沃尔泰核,其可以当成是该系统高阶的脉冲响应函数。如果N是有限的,那么该级数是截断的。如果a,b,N都是有限的,级数被称为双重有限。
离散时间类似于连续时间:
y(n)=h0+∑p=1P∑τ1=ab⋯∑τp=abhp(τ1,⋯,τp)∏j=1px(n−τj)y(n) = h_0 + \sum_{p = 1}^{P} \sum_{\tau_1 = a}^{b} \cdots \sum_{\tau_p = a}^{b} h_p(\tau_1, \cdots, \tau_p) \prod_{j = 1}^{p} x(n - \tau_j) y(n)=h0+p=1∑Pτ1=a∑b⋯τp=a∑bhp(τ1,⋯,τp)j=1∏px(n−τj)这里,hp被称为离散时间的沃尔泰核,如果P是有限的,级数操作就是截断的。如果a,b,P都是有限的,那么级操作被称为双重有限。
上述定义可以看出,还是需要假设时不变特点的。
从级数到滤波器,其实就是一个公式的不同理解
上面的公式也就是一种滤波器的表达,关键要看这个系数是变化的(自适应-时变系统)还是不变的(稳态-时不变系统)。还有一个就是实战中不可能有太多的阶数,二阶和三阶已经是极限了。此处参考一篇文档,从另一个角度来看一下一二三阶的volterra滤波器组成。首先假设一个线性无记忆的系统(直肠子):y(t)=h∗x(t)y(t)=h*x(t)y(t)=h∗x(t)然后在这个基础上,增加所谓的线性、离散、带记忆的时不变三个条件,就是经典的线性数字滤波器公式:y(n)=∑i=0nh(τi)∗x(n−τi)y(n)=\sum_{i=0}^nh(\tau_i)*x(n-\tau_i)y(n)=i=0∑nh(τi)∗x(n−τi)而积分公式为y(t)=∫0th(τ)x(t−τ)dτy(t) = \int_{0}^{t} h(\tau) \, x(t - \tau) \, d\tauy(t)=∫0th(τ)x(t−τ)dτ以上三个公式都很好理解,以下就是要烧脑了,我们实际生活的系统不可能理想的直通,存在各种非线性的魔怪,不知道 如何表达,除了一阶模拟了线性部分,能不能用高阶来模拟非线性的样子呢?答案是:能!同理我们描述一个无记忆的二阶非线性系统y2(n)=h2∗x2(t)y_2(n)=h_2*x^2(t)y2(n)=h2∗x2(t)下一步要考虑这个非线性离散的带记忆场景,这时候我们想一想相关运算,也就是我当前输入和历史某节点的输入相乘后可能对系统有所贡献,设定这个贡献系数为h2(pi,pj)h_2(p_i,p_j)h2(pi,pj),那么我们平铺一下这个公式y(n)=h2(p0,p0)⋅x(n)⋅x(n)+h2(p0,p1)⋅x(n)⋅x(n−1)+⋯+h2(p0,pn)⋅x(n)⋅x(0)+h2(p1,p1)⋅x(n−1)⋅x(n−1)+h2(p1,p2)⋅x(n−1)⋅x(n−2)+⋯+h2(p1,pn)⋅x(n−1)⋅x(0)+⋯+h2(pn,pn)⋅x(0)⋅x(0)=∑j=0nh2(p0,pj)⋅x(n)x(n−j)+∑j=0nh2(p1,pj)⋅x(n−1)x(n−j)+…=∑j=0n∑i=0nh2(pi,pj)⋅x(n−i)⋅x(n−j)\begin{align*} y(n) &= h_2(p_0,p_0)\cdot x(n)\cdot x(n) + h_2(p_0,p_1)\cdot x(n)\cdot x(n - 1) + \dots + h_2(p_0,p_n)\cdot x(n)\cdot x(0) \\ &\quad + h_2(p_1,p_1)\cdot x(n - 1)\cdot x(n - 1) + h_2(p_1,p_2)\cdot x(n - 1)\cdot x(n - 2) + \dots + h_2(p_1,p_n)\cdot x(n - 1)\cdot x(0) \\ &\quad + \dots + h_2(p_n,p_n)\cdot x(0)\cdot x(0) \\ &= \sum_{j= 0}^{n} h_2(p_0,p_j)\cdot x(n)x(n-j) + \sum_{j = 0}^{n} h_2(p_1,p_j)\cdot x(n - 1)x(n-j) + \dots \\ &= \sum_{j = 0}^{n} \sum_{i = 0}^{n} h_2(p_i,p_j)\cdot x(n-i)\cdot x(n-j) \end{align*}y(n)=h2(p0,p0)⋅x(n)⋅x(n)+h2(p0,p1)⋅x(n)⋅x(n−1)+⋯+h2(p0,pn)⋅x(n)⋅x(0)+h2(p1,p1)⋅x(n−1)⋅x(n−1)+h2(p1,p2)⋅x(n−1)⋅x(n−2)+⋯+h2(p1,pn)⋅x(n−1)⋅x(0)+⋯+h2(pn,pn)⋅x(0)⋅x(0)=j=0∑nh2(p0,pj)⋅x(n)x(n−j)+j=0∑nh2(p1,pj)⋅x(n−1)x(n−j)+…=j=0∑ni=0∑nh2(pi,pj)⋅x(n−i)⋅x(n−j)
这里h2(pi,pj)h_2(p_i,p_j)h2(pi,pj)叫做volterra的核。而一阶和二阶相加就组成了二阶volterra滤波器的基本形式。三阶同理,高阶省掉的部分叫截断。
参考
A Polynomial Multiple Variance Method for Volterra Filter Identification
二阶Volterra-LMS滤波器:非线性系统识别的利器
对Volterra级数公式的理解-1
关于三阶Volterra滤波器的一些理解
Volterra-series-based nonlinear system modeling and its engineering applications: A state-of-the-art review
Robust augmented Volterra adaptive filtering