文档介绍:《现代信号处理实验报告》
专业:模式识别与智能系统
姓名:曾勇
学号:2006193
实验报告一递推最小二乘法
1、问题的提出
当由实验提供了大量数据时,不能要求拟合函数在数据点处的偏差, 即(i=1,2,…,m) 严格为零,但为了使近似曲线尽量反映所给数据点的变化趋势,需对偏差有所要求。通常要求偏差平方和最小,此即称为最小二乘原理。
2、方案设计
(1)实验要求
已知,其中是均值为零方差相同的独立随机变量。
观测值如下表所示:
xi
yi
1
试用递推最小二乘法估计cj ( j=1,3,5,7 )的值,并在计算机上实现该算法。
(2)拟合模型的建立
关于拟和模型必须能反映离散点分布基本特征。常选取j是线性拟和模型,既j所属函数类为 M=Span{j,j1,… jn},其中 j 0,j1,… jn 是线性无关的基函数,于是j(x)= c j jj(x)。
通常选取每个jj是次数£j的简单多项式,即M 是次数£ n 的n次多项式空间。取 jj(x)=x j , j=0,1,…,n
M =Span{1 ,x , x2,…,x n},从而j(x)= C0 +C1 x1 + …+ C n x n =Pn(x)
设离散数据模型j(x)= c j jj(x)
则求解归结为 n+1元函数S的极值问题:
S(c0,c1,…,c n)= wi [ y i -c j jj(xi)] 2
显然S达最小值必要条件是
=2wi [ y i -c j jj(xi)] j k(x i)= 0,(k=0 ,1,…,n)
这是关于 c0,c1,…,c n 的方程组,改写成(jj ,j k) c j =(y, j k ), (k=0,1,2,…n)称为正规方程组
其中(jj ,j k )= wi jj(xi) j k(x i)
一般,n < m,函数 j 0,j1,…,jn,线性无关能保证正规方程组的系数矩阵
的行列式不为零。因此正规方程组有唯一解。设其解为
c j =c j *,j=0,1,…,n
则所要求的离散点的拟合函数(最佳平方逼近)为
j*(x)= c j *jj(x)
3、数据处理
本实验的拟合函数为j(x)= c 2k+1 *x2k+1,
其中j 0(x)=x, j 1(x)=x3, j 2(x)=x5, j 3(x)=x7。
正规方程组为(jj ,j k) c j =(y, j k ), (k=0,1,2),以及正规方程组的系数公式,
其中m=8,f即正规方程中的y,xi 和y i为已知的实验数据。
由此可得到相应的系数c 2k+1 (k=0,1,2),VC++仿真的结果如图1。
图1 递推最小二乘法仿真结果
4、结果分析
VC++仿真的结果表明,拟合函数为j(x)= c 2k+1 *x2k+1≈sinx,拟合函数近似为一个正弦函数,离散的数据基本在逼近正弦曲线。
最小二乘法方曲线拟和是实验数据处理的常用方法。最佳平方逼近可以在一个区间上比正弦较均匀的逼近函数且具有方法简单易行,实效性大,应用广泛等特点。但当正规方程阶数较高时,往往出现病态。因此必须谨慎对待和加以巧妙处理。有效方法之一是引入正交多项式以改善其病态性。
5、附录
矩阵相乘程序:
/* 计算矩阵的乘积*/
1) void brmul(a,b,m,n,k,c,col1,col2) /* m*n维矩阵A乘以n*k维矩阵B 结果放在矩阵C里 col1为A所在大矩阵的列数 col2为B所在大矩阵的列数*/
int m,n,k,col1,col2;
double a[],b[],c[];
{ int i,j,l,u;
for (i=0; i<=m-1; i++)
for (j=0; j<=k-1; j++)
{ u=i*col2+j; c[u]=;
for (l=0; l<=n-1; l++)
c[u]=c[u]+a[i*col1+l]*b[l*col2+j]; }
return;
}
2) 矩阵求逆
/* 计算矩阵的逆*/
#include ""
#include ""
#include ""
int brinv(a,n) /*维数为n*n矩阵A求逆后结果仍放在A中*/
int n;
double a[];
{ int *is