文章目录

  • 随机信号的参数建模法
  • MA模型
  • AR模型
  • ARMA模型
  • AR模型参数的估计
  • AR模型参数和自相关函数的关系
  • 实例
  • Y-W方程的解法——L-D算法
  • L-D算法的优缺点
  • 实例
  • AR模型参数估计的各种算法的比较和阶数的选择


随机信号的参数建模法

在对语音信号进行编码时,对语言产生的物理过程进行建模,编码器根据输入信号计算模型参数,然后对模型参数进行编码。当解码器收到模型参数后,再利用数学模型重建原始数据。这种利用数学模型和参数计算的编码方式称为信源模型编码技术。可以用下图表示过程:

llama模型下载 gguf_信息压缩


对于平稳随机信号,有三种常用的线性模型分别是:

  • AR模型(自回归模型Auto-regression model)
  • MA模型(滑动平均模型Moving average model)
  • ARMA模型(自回归滑移平均模型Auto-regression-Moving average model)

由于任何平稳的ARMA模型或者MA模型均可以用无限阶或阶数足够的AR模型去近似。因此本文着重介绍AR模型的基本原理和方法。

MA模型

随机信号llama模型下载 gguf_llama模型下载 gguf_02由当前的激励llama模型下载 gguf_信号处理_03和若干次过去的激励llama模型下载 gguf_数字信号处理_04线性组合产生:
llama模型下载 gguf_llama模型下载 gguf_05
对上述表达式进行拉普拉斯变换可以得到该模型的系统函数为:
llama模型下载 gguf_信息压缩_06

q表示系统阶数,系统函数只有零点没有极点,所以该系统一定是稳定的系统,也称为全零点模型,用llama模型下载 gguf_信息压缩_07来表示。

AR模型

随机信号llama模型下载 gguf_llama模型下载 gguf_02由本身的若干次过去值llama模型下载 gguf_系统函数_09和当前的激励值llama模型下载 gguf_信号处理_03线性组合产生:
llama模型下载 gguf_数字信号处理_11

该模型的系统函数为:
llama模型下载 gguf_信息压缩_12

p是系统阶数,系统函数中只有极点无零点,也称为全极点模型,系统由于极点的原因,要考虑到系统的稳定性,因而要注意极点的分布位置,用llama模型下载 gguf_信号处理_13来表示。

ARMA模型

ARMA是AR与MA模型的结合:
llama模型下载 gguf_llama模型下载 gguf_14
该模型的系统函数是:
llama模型下载 gguf_llama模型下载 gguf_15

既有零点又有极点,所以也称极零点模型,要考虑极零点的分布位置,保证系统的稳定,用llama模型下载 gguf_信号处理_16表示。

在随机信号时域分析中,提出了许多数学模型用来由已知在最大不确定原则下预测将来值,其优点是只需要很少的已知值。但是它不能用在信号是确定性的场合,在确定信号的情况下,信号是由确定的数学方程预测的

AR模型参数的估计

随机信号的建模法最近在信号处理中应用相当普遍。。实际中选用哪一种模型就要考虑到节约和计算量,选定模型后,剩下的任务就是用适当的算法估计模型参数llama模型下载 gguf_系统函数_17,以便用模型对随机信号进行预测。

AR模型参数和自相关函数的关系

对于llama模型下载 gguf_系统函数_18,两边同时乘以llama模型下载 gguf_数字信号处理_19然后求均值:

llama模型下载 gguf_llama模型下载 gguf_20
由自相关函数的对称性,可以将原式化为:
llama模型下载 gguf_数字信号处理_21
而系统的单位冲激相应llama模型下载 gguf_系统函数_22是因果的,所以输出的平稳随机信号和输入的白噪声之间的互相关函数有下列推导:

llama模型下载 gguf_系统函数_23的定义为
llama模型下载 gguf_系统函数_24

而随机信号的当前值又是随机信号的当前激励通过滤波器产生的,所以有:
llama模型下载 gguf_信号处理_25
由于均值是对随机变量来求的,所以均值时可以把llama模型下载 gguf_系统函数_22当作常量。
llama模型下载 gguf_信号处理_27
所以有:
llama模型下载 gguf_信息压缩_28
综上,有:

llama模型下载 gguf_信息压缩_29

llama模型下载 gguf_信息压缩_12转化为时域可以得到
llama模型下载 gguf_llama模型下载 gguf_31
所以有llama模型下载 gguf_信息压缩_32
根据llama模型下载 gguf_系统函数_33的表的式可以看出,AR模型输出信号的自相关函数具有递推的性质:
llama模型下载 gguf_信号处理_34
这就是著名的Yule-Walker方程,将上式变换:
llama模型下载 gguf_数字信号处理_35
可以求得输入的白噪声方差为:
llama模型下载 gguf_系统函数_36
最后,结果为:
llama模型下载 gguf_信息压缩_37

方程组的系数都是自相关矩阵llama模型下载 gguf_数字信号处理_38,由于自相关函数是偶对称函数:llama模型下载 gguf_数字信号处理_39,因而自相关矩阵是对称矩阵,与主对角线平行的斜对角线上的元素都是相同的,是的维托毕兹(Toeplitz)矩阵,所以存在高效算法,其中应用广泛的有Levinson-Durbin(L-D)算法。Yule-Walker(Y-W)方程表明,只要已知输出平稳随机信号的自相关函数,就能求出AR模型中的参数llama模型下载 gguf_系统函数_40,并且需要的观测数据较少。

实例

自回归信号模型llama模型下载 gguf_信息压缩_41为:
llama模型下载 gguf_信息压缩_42,式中llama模型下载 gguf_系统函数_43式具有方差llama模型下载 gguf_系统函数_44的平稳白噪声,求:

  1. 自相关序列llama模型下载 gguf_数字信号处理_45,m=1,2,3,4,5,6,72. 用求出来的自相关序列估计llama模型下载 gguf_信息压缩_46的参数llama模型下载 gguf_信号处理_47以及输入白噪声方差llama模型下载 gguf_llama模型下载 gguf_48的大小。
  2. 用a求出的自相关序列来估计AR(3)的参数llama模型下载 gguf_llama模型下载 gguf_49,以及输入白噪声的方差llama模型下载 gguf_llama模型下载 gguf_48的大小
  3. 利用AR模型,仿真给出的32点观测值x(n)=[0.4282 1.1454 1.5597 1.8994 1.6854 2.3075 2.4679 1.9790 1.6063 1.2804 -0.2083 0.0577 0.0206 0.3572 1.6572 0.7488 1.6666 1.9830 2.6914 1.2521 1.8691 1.6855 0.6242 0.1763 1.3490 0.6955 1.2941 1.0475 0.4319 0.0312 0.5802 -0.6177],用观测值的自相关序列来估计llama模型下载 gguf_信息压缩_46的参数llama模型下载 gguf_数字信号处理_52,以及输入白噪声的llama模型下载 gguf_llama模型下载 gguf_48

求解

  1. 题干给出了该信号本身的表达式,可以得到llama模型下载 gguf_数字信号处理_54那么可以直接使用公式:
    llama模型下载 gguf_数字信号处理_55
    利用matlab解方程:
a = [-14/24,-9/24,1/24 ];
	
	A = [ 1, a(1), a(2), a(3);  
	    a(1), 1 + a(2), a(3), 0;
	    a(2), a(1)+a(3), 1, 0; 
	    a(3), a(2), a(1), 1]
	B = [1;0;0;0];
	Rxx = A \ B
  1. 可以得到
Rxx =
4.9377
4.3287
4.1964
3.8654
  1. 此后可以使用公式llama模型下载 gguf_信息压缩_56来计算R(4), R(5)等
for i = 5:7
    Rxx(i) = 0;
    for k = 1:3
        Rxx(i) = Rxx(i) - a(k) * Rxx(i-k);
    end
end
Rxx
  1. 结果如下:
Rxx =

4.9377
4.3287
4.1964
3.8654
3.6481
3.4027
3.1919
  1. 利用llama模型下载 gguf_数字信号处理_57
    如同上一问,直接解方程即可。解得llama模型下载 gguf_llama模型下载 gguf_58
    可以发现对AR模型参数是无失真的估计,因为已知AR模型,我们可以得到完全的输出观测值,因而求得的自相关函数没有失真,当然也就可以不失真的估计。
  2. 利用公式llama模型下载 gguf_系统函数_59可以求得自相关系数。
x_n = [0.4282 1.1454 1.5597 1.8994 1.6854 2.3075 2.4679 1.9790 1.6063 1.2804 
-0.2083 0.0577 0.0206 0.3572 1.6572 0.7488 1.6666 1.9830 2.6914 1.2521 1.8691 
1.6855 0.6242 0.1763 1.3490 0.6955 1.2941 1.0475 0.4319 0.0312 0.5802 -0.6177];

R_xx = zeros( 1, length(x_n) );

for m  = 0 : length(x_n) - 1 
    j = 1; 
    while j + m <= length(x_n)
        R_xx(m+1) = R_xx(m+1) + x_n(j) * x_n(j + m );
        j = j + 1; 
    end
    R_xx(m+1) =  R_xx(m+1) / 32;
end
R_xx
  1. 结果如下:
R_xx =

  1 至 11 列

    1.9271    1.6618    1.5381    1.3545    1.1349    0.9060    0.8673    0.7520    0.7637    0.8058    0.8497

  12 至 22 列

    0.8761    0.9608    0.8859    0.7868    0.7445    0.6830    0.5808    0.5622    0.5134    0.4301    0.3998

  23 至 32 列

    0.3050    0.2550    0.1997    0.1282    0.0637    0.0329   -0.0015   -0.0089   -0.0143   -0.0083
  1. 带入矩阵llama模型下载 gguf_数字信号处理_57可以解得
    llama模型下载 gguf_系统函数_61
    与真实AR模型参数误差为:llama模型下载 gguf_llama模型下载 gguf_62,原因在于我们只有一部分的观测数据,使得自相关序列值与理想的完全不同。输入信号的方差误差比较大:llama模型下载 gguf_信息压缩_63,造成的原因比较多,计算机仿真的白噪声由于只有32点长,32点序列的方差不可能刚好等于1。给出一段观测值求AR模型参数这样直接解方程组,当阶数越高时直接解方程组计算就越复杂,因而要用特殊的算法使得计算量减小且精确度高。

Y-W方程的解法——L-D算法

在上述实例中,要得到更精确的估计值,就要建立更高阶的AR模型,直接用观测值的自相关序列来求解Y-W方程计算量太大。因此把AR模型和预测系统联系起来,换个方法来估计AR参数。
从AR模型的时域表达式llama模型下载 gguf_数字信号处理_11可以知道模型的当前输出值与它过去的输出值有关。预测是推断一个给定序列的未来值,即利用信号前后的相关性来估计未来的信号值

若序列的模型已知而用过去观测的数据来推求现在和将来的数据称为前向预测器,表示为:llama模型下载 gguf_信号处理_65

式中llama模型下载 gguf_信号处理_66代表m阶预测器的预测系数,负号是为了与技术文献保持一致。显然预测出来的结果与真实的结果存在预测误差或前向预测误差,设误差为llama模型下载 gguf_数字信号处理_67:

llama模型下载 gguf_数字信号处理_68

llama模型下载 gguf_数字信号处理_67看成系统的输出,llama模型下载 gguf_llama模型下载 gguf_02看成系统的输入,得到系统函数:

llama模型下载 gguf_系统函数_71

llama模型下载 gguf_信号处理_72


假如m=p,且预测系数和AR参数模型参数相同,(如上图所示,左为预测误差系统,右为AR模型)那么就有llama模型下载 gguf_系统函数_73,即前向预测误差系统中的输入为llama模型下载 gguf_llama模型下载 gguf_02,输出为预测误差llama模型下载 gguf_数字信号处理_67等于白噪声。也就是说前向预测误差系统对观测信号起了白化的作用。由于AR模型和前向预测误差系统有着密切的关系,两者的系统函数互为倒数,所以求AR模型参数就可以通过求预测误差系统的预测系数来实现。

llama模型下载 gguf_数字信号处理_68

中的预测误差求均方值,可得

llama模型下载 gguf_信号处理_77

要使得均方误差最小,将上式右边对预测系数求偏导并且等于零,得到m个等式:

llama模型下载 gguf_信息压缩_78

带入均方误差公式llama模型下载 gguf_数字信号处理_79,可以得到最小均方误差:

llama模型下载 gguf_llama模型下载 gguf_80


llama模型下载 gguf_系统函数_81

也就是p阶预测器的预测系数等于p阶AR模型的参数,由于llama模型下载 gguf_信息压缩_82,所以最小均方预测误差等于白噪声方差,即llama模型下载 gguf_llama模型下载 gguf_83

有了上面的知识后,我们回来看怎样估计AR模型参数,也即要估计参数llama模型下载 gguf_llama模型下载 gguf_84,这里介绍应用广泛的L-D算法。L-D算法的基本思想就是根据Y-W方程式或上面介绍的两个式子,自相关序列具有递推的性质,L-D递推算法是模型阶数逐渐加大的一种算法,先计算阶次m=1时的预测系数llama模型下载 gguf_系统函数_85llama模型下载 gguf_llama模型下载 gguf_86然后计算m=2时的llama模型下载 gguf_系统函数_87,llama模型下载 gguf_信息压缩_88llama模型下载 gguf_llama模型下载 gguf_86一直计算到m=p阶时,llama模型下载 gguf_信号处理_90以及llama模型下载 gguf_信号处理_91。这种递推算法的特点是,每一阶次参数的计算是从低一阶次的模型参数推算出来的,既可减少工作量又便于寻找最佳的阶数值,满足精度时就停止递推。
最终可以得到:
llama模型下载 gguf_llama模型下载 gguf_92
其中llama模型下载 gguf_llama模型下载 gguf_93称为反射系数,从上式知道整个迭代过程需要已知自相关函数,给定初始值llama模型下载 gguf_信号处理_94以及AR模型的阶数,就可以按照图下图所示流程图进行估计啦。


Created with Raphaël 2.2.0 开始 输入x(n),n=0~N-1 计算R_xx(m) 初始化m=0: E_0 = R_xx(0), a_0 = 1 m = 1 m=p 输出a_p(k),k=1...p 结束 m = m + 1 yes no


L-D算法的优缺点

  • 优点
  • 计算速度快
  • 求得的AR模型必定稳定
  • 均方预测误差随着阶次的增加而减小
  • 缺点
  • 由于在求自相关序列时,是假设除了观测值之外的数据都为零,必然会引入较大误差。

实例

自回归信号模型llama模型下载 gguf_信息压缩_41为:
llama模型下载 gguf_信息压缩_42,式中llama模型下载 gguf_系统函数_43式具有方差llama模型下载 gguf_系统函数_44的平稳白噪声.
利用AR模型,仿真给出的32点观测值x(n)=[0.4282 1.1454 1.5597 1.8994 1.6854 2.3075 2.4679 1.9790 1.6063 1.2804 -0.2083 0.0577 0.0206 0.3572 1.6572 0.7488 1.6666 1.9830 2.6914 1.2521 1.8691 1.6855 0.6242 0.1763 1.3490 0.6955 1.2941 1.0475 0.4319 0.0312 0.5802 -0.6177],用观测值的自相关序列来估计llama模型下载 gguf_信息压缩_41的参数llama模型下载 gguf_信息压缩_100,以及输入白噪声的llama模型下载 gguf_信号处理_101

对于该问题,采用L-D算法进行运算。

首先使用相同的做法算出llama模型下载 gguf_系统函数_102。之后利用L-D算法。
由于matlab下标从1开始,所以对于下标需要进行一些特殊处理。

x_n = [0.4282 1.1454 1.5597 1.8994 1.6854 2.3075 2.4679 1.9790 1.6063 1.2804 -0.2083 0.0577 0.0206 0.3572 1.6572 0.7488 1.6666 1.9830 2.6914 1.2521 1.8691 1.6855 0.6242 0.1763 1.3490 0.6955 1.2941 1.0475 0.4319 0.0312 0.5802 -0.6177];

R_xx = zeros( 1, length(x_n) );

for m  = 0 : length(x_n) - 1 
    j = 1; 
    while j + m <= length(x_n)
        R_xx(m+1) = R_xx(m+1) + x_n(j) * x_n(j + m );
        j = j + 1;
    end
    R_xx(m+1) =  R_xx(m+1) / 32;
end

%初始化
p = 4;
E = zeros(1, p); E(1) = R_xx(1);
a = zeros(p, 3); a(1 , 1) = 1;

for m = 1:3
    a( m + 1, m ) = R_xx(m + 1);
    for k = 1:( m - 1 )
        a( m + 1, m ) = a( m + 1, m ) + a( m, k ) * R_xx( m + 1 - k );
    end
    a( m + 1, m ) = - a( m + 1, m ) / E(m);
    for k = 1:(m - 1)
       a( m + 1, k ) = a( m, k ) + a( m + 1, m ) * a( m, m - k );
    end 
    E( m + 1 ) = ( 1 - a( m + 1, m ).^2 ) * E(m); 
end
a
E

最终结果为:

a =

    1.0000         0         0
   -0.8623         0         0
   -0.6789   -0.2127         0
   -0.6984   -0.2748    0.0915


E =

    1.9271    0.4941    0.4718    0.4678

此外,Matlab有专门的函数实现L-D算法的AR模型参数估计:[a, E]=aryule(x,p),输入x表示观测信号,输入p表示要求的阶数,输出a表示估计的模型参数,e表示噪声信号的方差估计。例如本题用该函数计算:

[a, E] = aryule(x_n,3);
a
E

结果为:

a =

    1.0000   -0.6984   -0.2748    0.0915


E =

    0.4678

可以看到结果是一样的。
如果使用更高阶的AR模型,可以看到均方误差会越来越小。
给定观测序列后我们很容易用L-D算法来进行AR模型参数的估计,但是如何确定阶数以及L-D算法存在的缺点如何克服呢?

AR模型参数估计的各种算法的比较和阶数的选择

为了克服L-D算法导致的误差,1968年Burg提出了Burg算法,其基本思想是对观测的数据进行前向和后向预测,然后让两者的均方误差之和为最小作为估计的准则估计处反射系数,进而通过L-D算法的递推公式求出AR模型参数。Burg算法的优点是,求得的AR模型是稳定的,较高的计算效率,但递推还是用的L-D算法,因此仍然存在明显的缺点。
Matlab中有专门的函数实现Burg算法的AR模型参数估计:[a, E]=arburg(x,p)。例如上面的例子用Burg算法计算结果为:

[a, E] = arburg(x_n,p);
a
E

结果:

a =

    1.0000   -0.6852   -0.3088   -0.0489    0.1759


E =

    0.4426

结果与L-D算法结果略有不同,llama模型下载 gguf_llama模型下载 gguf_103估计得更精确些。

1980年Marple在前人的基础上提出一种高效算法,Marple算法或者称不受约束的最小二乘法(LS),该算法的思想是,让每一个预测系数的确定直接与前向、后向预测的总的平方误差最小,这样预测系数就不能由低一阶的系数递推确定了,所以不能用L-D算法求解,实践表明该算法比L-D、Burg算法优越。由于该算法是从整体上选择所有的模型参数达到总的均方误差最小,与自适应算法类似,不足是该算法不能保证AR模型的稳定性。
AR模型的阶数选择不同得到的模型不同,效果相差较大,因而如何选择阶数很重要。因此国内外学者在这方面都做了许多研究工作,其中基于均方误差最小的最终预测误差(FPE:final predidyion error)准则是确定AR模型阶次比较有效的准则。
最终预测误差(FPE:final predidyion error)准则定义:给定观测长度为N,从某个过程的一次观测数据中估计到了预测系数,然后用该预测系数构成的系统处理另一次观察数据,则有预测均方误差,该误差在某个阶数时为最小,其表达式为:
llama模型下载 gguf_数字信号处理_104
估计的方差随着阶数的增加而减小,而括号内的值随着p的增加而增加,因而能找到一最佳的p,使得FPE最小。
除了用上式进行阶数的选择,还可以采用试验的方法,如果某一个p值满足预先规定的某些要求,则认为该p值是最优的。在短数据情况下,根据经验,AR模型的阶次选在N/3~N/2的范围内较好。