基于MATLAB的最小二乘法参数辨识与仿真_石贤良

基于MATLAB的最小二乘法参数辨识与仿真_石贤良
基于MATLAB的最小二乘法参数辨识与仿真_石贤良

曲线拟合的最小二乘法matlab举例

曲线拟合的最小二乘法 学院:光电信息学院 姓名:赵海峰 学号: 200820501001 一、曲线拟合的最小二乘法原理: 由已知的离散数据点选择与实验点误差最小的曲线 S( x) a 0 0 ( x) a 1 1(x) ... a n n ( x) 称为曲线拟合的最小二乘法。 若记 m ( j , k ) i (x i ) j (x i ) k (x i ), 0 m (f , k ) i0 (x i )f (x i ) k (x i ) d k n 上式可改写为 ( k , jo j )a j d k ; (k 0,1,..., n) 这个方程成为法方程,可写成距阵 形式 Ga d 其中 a (a 0,a 1,...,a n )T ,d (d 0,d 1,...,d n )T , 、 数值实例: 下面给定的是乌鲁木齐最近 1个月早晨 7:00左右(新疆时间 )的天气预报所得 到的温度数据表,按照数据找出任意次曲线拟合方程和它的图像。 它的平方误差为: || 2 | 2 ] x ( f

(2008 年 10 月 26~11 月 26) F 面应用Matlab 编程对上述数据进行最小二乘拟合 三、Matlab 程序代码: x=[1:1:30]; y=[9,10,11,12,13,14,13,12,11,9,10,11,12,13,14,12,11,10,9,8,7,8,9,11,9,7,6,5,3,1]; %三次多项式拟合% %九次多项式拟合% %十五次多项式拟合% %三次多项式误差平方和 % %九次次多项式误差平方和 % %十五次多项式误差平方和 % %用*画出x,y 图像% %用红色线画出x,b1图像% %用绿色线画出x,b2图像% %用蓝色o 线画出x,b3图像% 四、数值结果: 不同次数多项式拟和误差平方和为: r1 = 67.6659 r2 = 20.1060 r3 = 3.7952 r1、r2、r3分别表示三次、九次、十五次多项式误差平方和 拟和曲线如下图: a 仁polyfit(x,y,3) a2= polyfit(x,y,9) a3= polyfit(x,y,15) b1= polyval(a1,x) b2= polyval(a2,x) b3= polyval(a3,x) r1= sum((y-b1).A 2) r2= sum((y-b2).A2) r3= sum((y-b3).A2) plot(x,y,'*') hold on plot(x,b1, 'r') hold on plot(x,b2, 'g') hold on plot(x,b3, 'b:o')

最小二乘法曲线拟合 原理及matlab实现

曲线拟合(curve-fitting ):工程实践中,用测量到的一些离散的数据},...2,1,0),,{(m i y x i i =求一个近似的函数)(x ?来拟合这组数据,要求所得的拟合曲线能最好的反映数据的基本趋势(即使)(x ?最好地逼近()x f ,而不必满足插值原则。因此没必要取)(i x ?=i y ,只要使i i i y x -=)(?δ尽可能地小)。 原理: 给定数据点},...2,1,0),,{(m i y x i i =。求近似曲线)(x ?。并且使得近似曲线与()x f 的偏差最小。近似曲线在该点处的偏差i i i y x -=)(?δ,i=1,2,...,m 。 常见的曲线拟合方法: 1.使偏差绝对值之和最小 2.使偏差绝对值最大的最小 3.使偏差平方和最小 最小二乘法: 按偏差平方和最小的原则选取拟合曲线,并且采取二项式方程为拟合曲线的方法,称为最小二乘法。 推导过程: 1. 设拟合多项式为: 2. 各点到这条曲线的距离之和,即偏差平方和如下: 3. 问题转化为求待定系数0a ...k a 对等式右边求i a 偏导数,因而我们得到 了: ....... 4、 把这些等式化简并表示成矩阵的形式,就可以得到下面的矩阵: 5. 将这个范德蒙得矩阵化简后可得到:

6. 也就是说X*A=Y,那么A = (X'*X)-1*X'*Y,便得到了系数矩阵A,同时,我们也就得到了拟合曲线。 MATLAB实现: MATLAB提供了polyfit()函数命令进行最小二乘曲线拟合。 调用格式:p=polyfit(x,y,n) [p,s]= polyfit(x,y,n) [p,s,mu]=polyfit(x,y,n) x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s包括R(对x进行QR分解的三角元素)、df(自由度)、normr(残差)用于生成预测值的误差估计。 [p,s,mu]=polyfit(x,y,n)在拟合过程中,首先对x进行数据标准化处理,以在拟合中消除量纲等影响,mu包含标准化处理过程中使用的x的均值和标准差。 polyval( )为多项式曲线求值函数,调用格式: y=polyval(p,x) [y,DELTA]=polyval(p,x,s) y=polyval(p,x)为返回对应自变量x在给定系数P的多项式的值。 [y,DELTA]=polyval(p,x,s) 使用polyfit函数的选项输出s得出误差估计Y DELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则Y DELTA将至少包含50%的预测值。 如下给定数据的拟合曲线: x=[0.5,1.0,1.5,2.0,2.5,3.0], y=[1.75,2.45,3.81,4.80,7.00,8.60]。 解:MATLAB程序如下: x=[0.5,1.0,1.5,2.0,2.5,3.0]; y=[1.75,2.45,3.81,4.80,7.00,8.60]; p=polyfit(x,y,2) x1=0.5:0.05:3.0; y1=polyval(p,x1); plot(x,y,'*r',x1,y1,'-b') 运行结果如图1 计算结果为: p =0.5614 0.8287 1.1560 即所得多项式为y=0.5614x^2+0.08287x+1.15560 图1 最小二乘法曲线拟合示例 对比检验拟合的有效性: 例:在[0,π]区间上对正弦函数进行拟合,然后在[0,2π]区间画出图形,比较拟合区间和非拟合区间的图形,考察拟合的有效性。 在MATLAB中输入如下代码: clear x=0:0.1:pi; y=sin(x); [p,mu]=polyfit(x,y,9)

系统辨识最小二乘参数估计matlab

最小二乘参数估计 摘要: 最小二乘的一次性完成辨识算法(也称批处理算法),他的特点是直接利用已经获得的所有(一批)观测数据进行运算处理。这种算法在使用时,占用内存大,离线辨识,观测被辨识对象获得的新数据往往是逐次补充到观测数据集合中去的。在应用一次完成算法时,如果要求在每次新增观测数据后,接着就估计出系统模型的参数,则需要每次新增数据后要重新求解矩阵方程()Z l T l l T l ΦΦΦ-∧=1θ。 最小二乘辩识方法在系统辩识领域中先应用上已相当普及,方法上相当完善,可以有效的用于系统的状态估计,参数估计以及自适应控制及其他方面。 关键词: 最小二乘(Least-squares ),系统辨识(System Identification ) 目录: 1.目的 (1) 2.设备 (1) 3引言 (1) 3.1 课题背景 (1) 4数学模型的结构辨识 (2) 5 程序 (3) 5.1 M 序列子函数 ................................................................................. 错误!未定义书签。 5.2主程序............................................................................................... 错误!未定义书签。 6实验结果: ................................................................................................................................... 3 7参考文献: ................................................................................................. 错误!未定义书签。 1.目的 1.1掌握系统辨识的理论、方法及应用 1.2熟练Matlab 下最小二乘法编程 1.3掌握M 序列产生方法 2.设备 PC 机1台(含Matlab 软件) 3引言 3.1 课题背景 最小二乘理论是有高斯(K.F.Gauss )在1795年提出:“未知量的最大可能值是这样一个数值,它使各次实际观测值和计算值之间的差值的平方乘以度量其精度的数值以后的和最小。”这就是最小二乘法的最早思想。 最小二乘辨识方法提供一个估算方法,使之能得到一个在最小方差意义上与实验数据最

Matlab最小二乘法曲线拟合的应用实例

MATLAB机械工程 最小二乘法曲线拟合的应用实例 班级: 姓名: 学号: 指导教师:

一,实验目的 通过Matlab上机编程,掌握利用Matlab软件进行数据拟合分析及数据可视化方法 二,实验内容 1.有一组风机叶片的耐磨实验数据,如下表所示,其中X为使用时间,单位为小时h,Y为磨失质量,单位为克g。要求: 对该数据进行合理的最小二乘法数据拟合得下列数据。 x=[10000 11000 12000 13000 14000 15000 16000 17000 18000 19000 2 0000 21000 22000 23000]; y=[24.0 26.5 29.8 32.4 34.7 37.7 41.1 42.8 44.6 47.3 65.8 87.5 137.8 174. 2] 三,程序如下 X=10000:1000:23000; Y=[24.0,26.5,29.8,32.4,34.7,37.7,41.1,42.8,44.6,47.3,65.8,87.5,137.8,17 4.2] dy=1.5; %拟合数据y的步长for n=1:6 [a,S]=polyfit(x,y,n); A{n}=a;

da=dy*sqrt(diag(inv(S.R′*S.R))); Da{n}=da′; freedom(n)=S.df; [ye,delta]=polyval(a,x,S); YE{n}=ye; D{n}=delta; chi2(n)=sum((y-ye).^2)/dy/dy; end Q=1-chi2cdf(chi2,freedom); %判断拟合良好度 clf,shg subplot(1,2,1),plot(1:6,abs(chi2-freedom),‘b’) xlabel(‘阶次’),title(‘chi2与自由度’) subplot(1,2,2),plot(1:6,Q,‘r’,1:6,ones(1,6)*0.5) xlabel(‘阶次’),title(‘Q与0.5线’) nod=input(‘根据图形选择适当的阶次(请输入数值)’); elf,shg, plot(x,y,‘kx’);xlabel(‘x’),ylabel(‘y’); axis([8000,23000,20.0,174.2]);hold on errorbar(x,YE{nod},D{nod},‘r’);hold off title(‘较适当阶次的拟合’) text(10000,150.0,[‘chi2=’num2str(chi2(nod))‘~’int2str(freedom(nod))])

用matlab实现最小二乘递推算法辨识系统参数

用matlab实现最小二乘递推算法辨识系统参 数 自动化系统仿真实验室指导教师: 学生姓名班级计082-2 班学号撰写时间: 全文结束》》-3-1 成绩评定: 一.设计目的 1、学会用Matlab实现最小二乘法辨识系统参数。 2、进一步熟悉Matlab的界面及基本操作; 3、了解并掌握Matlab中一些函数的作用与使用;二.设计要求最小二乘递推算法辨识系统参数,利用matlab编程实现,设初始参数为零。z(k)-1、5*z(k-1)+0、7*z(k-2)=1*u(k-1)+0、5*u(k-2)+v(k); 选择如下形式的辨识模型:z(k)+a1*z(k- 1)+a2*z(k-2)=b1*u(k-1)+b2*u(k-2)+v(k);三.实验程序 m=3;N=100;uk=rand(1,N);for i=1:Nuk(i)=uk(i)*(-1)^(i-1);endyk=zeros(1,N); for k=3:N yk(k)=1、5*yk(k-1)-0、 7*yk(k-2)+uk(k-1)+0、5*uk(k-2); end%j=100;kn=0;%y=yk(m:j);%psi=[yk(m-1:j-1);yk(m-2:j-2);uk(m-1:j-1);uk(m-2:j- 2)];%pn=inv(psi*psi);%theta=(inv(psi*psi)*psi*y);theta=[0 ;0;0;0];pn=10^6*eye(4);for t=3:Nps=([yk(t-1);yk(t-

2);uk(t-1);uk(t-2)]);pn=pn- pn*ps*ps*pn*(inv(1+ps*pn*ps));theta=theta+pn*ps*(yk(t)-ps*theta);thet=theta;a1=thet(1);a2=thet(2);b1=thet(3);b2= thet(4); a1t(t)=a1;a2t(t)=a2;b1t(t)=b1;b2t(t)=b2;endt=1:N;plot(t,a 1t(t),t,a2t(t),t,b1t(t),t,b2t(t));text(20,1、 47,a1);text(20,-0、67,a2);text(20,0、97,b1);text(20,0、47,b2);四.设计实验结果及分析实验结果图:仿真结果表明,大约递推到第步时,参数辨识的结果基本到稳态状态,即a1=1、5999,b1=1,c1=0、5,d1=-0、7。五、设计感受这周的课程设计告一段落了,时间短暂,意义重大。通过这次次练习的机会,重新把matlab课本看了一遍,另外学习了系统辨识的有关内容,收获颇丰。对matlab的使用更加纯熟,也锻炼了自己在课本中搜索信息和知识的能力。在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。同时我也进一步认识了matlab软件强大的功能。在以后的学习和工作中必定有很大的用处。

Matlab系统辨识尝试之详细过程1

Matlab系统辨识尝试之详细过程1 前面介绍了Matlab系统辨识工具箱的一些用法,这里拿一个直观的例子来尝试工具箱的具体用法。比较长,给个简单目录吧: 1.辨识的准备 2.辨识数据结构的构造 3.GUI辨识 4.辨识效果 5.对固有频率的辨识 6.结构化辨识 7.灰箱辨识 8.加入kalman滤波的灰箱辨识 1.辨识的准备 在辨识前,首先要根据自己辨识的情况,确定要辨识的状态空间模型的一些特点,如连续还是离散的;有无直通 分量(即从输入直通到输出的分量);输入延迟;初始状态等。了解了这些情况就可以更快速的配置辨识时的一些设 置选项。 2.辨识数据结构的构造 使用原始数据构造iddata结构: data=iddata(y,u,Ts); 这里以一个弹簧质量系统的仿真为例 代码如下,其中用到了函数MDOFSolve,这在之前的博文介绍过(https://www.360docs.net/doc/8415967132.html,/?p=183),拿来用即可。如果发现运行有错误,可以将MDOFSolve函数开头的一句 omega2=real(eval(omega2)); 注释掉。 %弹簧质量系统建模 clc clear close all m=200; k=980*1000;

c=1.5*1000; m1=1*m; m2=1.5*m; k1=1*k; k2=2*k; k3=k1; %%由振动力学知识求固有频率 M=[m10;0m2]; K=[k1+k2-k2;-k2k3+k2]; [omega,phi,phin]=MDOFSolve(M,K); fprintf('固有频率:%fHz\n',subs(omega/2/pi)); %%转化到状态空间 innum=2; outnum=2; statenum=4; A=[0100; -(k1+k2)/m10k2/m10; 0001; k2/m20-(k3+k2)/m20]; B=[00; 1/m10; 00; 01/m2]; C=[1000; 0010]; D=zeros(outnum,innum); K=zeros(statenum,innum); mcon=idss(A,B,C,D,K,'Ts',0);%连续时间模型 figure impulse(mcon) %%信号仿真,构造数据供辨识 n=511;%输入信号长度 Ts=0.001; t=0:Ts:(n-1)*Ts; u1=idinput(n,'prbs');%输入1为伪随机信号 u2=zeros(n,1);%输入2为空 u=[u1u2]; simdat=iddata([],u,Ts);%形成输入数据对象 e=randn(n,2)*1e-7; simopt=simOptions('AddNoise',true,'NoiseData',e);%添加噪声yn=sim(mcon,simdat,simopt);%加噪声仿真 y=sim(mcon,simdat);%无噪声仿真

Matlab_系统辨识_应用例子

例1、考虑仿真对象 )()2(5.0)1()2(7.0)1(5.1)(k v k u k u k z k z k z +-+-=-+-- 其中,)(k v 是服从正态分布的白噪声N )1,0(。输入信号采用4阶M 序列,幅度为1。选择如下形式的辨识模型 )()2()1()2()1()(2121k v k u b k u b k z a k z a k z +-+-=-+-+ 设输入信号的取值是从k =1到k =16的M 序列,则待辨识参数LS θ?为LS θ?=(T T -ΦΦΦ1)z 。其中,被辨识参数LS θ?、观测矩阵Φ的表达式为: ????? ???????=2121?b b a a LS θ (3)(4)(16)z z z ??????=???? ??z (2)(1)(2)((3)(2)(3)(2)(15)(14)(15)(14)z z u u z z u u z z u u --????--??Φ=????--?? 程序框图如图1所示。Matlab 仿真程序如下: %二阶系统的最小二乘一次完成算法辨识程序,文件名:LS.m

u=[-1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1]; %系统辨识的输入信号为一个周期的M序列 z=zeros(1,16); %定义输出观测值的长度 for k=3:16 z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2); %用理想输出值作为观测值 end subplot(3,1,1) %画三行一列图形窗口中的第一个图形 stem(u) %画输入信号u的径线图形 subplot(3,1,2) %画三行一列图形窗口中的第二个图形 i=1:1:16; %横坐标范围是1到16,步长为1 plot(i,z) %图形的横坐标是采样时刻i, 纵坐标是输出观测值z, 图形格式为连续曲线 subplot(3,1,3) %画三行一列图形窗口中的第三个图形 stem(z),grid on %画出输出观测值z的径线图形,并显示坐标网格u,z %显示输入信号和输出观测信号 %L=14 %数据长度 HL=[-z(2) -z(1) u(2) u(1);-z(3) -z(2) u(3) u(2);-z(4) -z(3) u(4) u(3);-z(5) -z(4) u(5) u(4);-z(6) -z(5) u(6) u(5);-z(7) -z(6) u(7) u(6);-z(8) -z(7) u(8) u(7);-z(9) -z(8) u(9) u(8);-z(10) -z(9) u(10) u(9);-z(11) -z(10) u(11) u(10);-z(12) -z(11) u(12) u(11);-z(13) -z(12) u(13) u(12);-z(14) -z(13) u(14) u(13);-z(15) -z(14) u(15) u(14)] %给样本矩阵 赋值

最小二乘法matlab实验报告

南京信息工程大学实验(实习)报告实验课程数学建模实验名称_ 最小二乘法__ 实验日期 _ 指导老师 专业统计学年级 小组成员 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 实验目的:学会MATLAB软件中曲线拟合方法。 实验内容及要求: 问题1:多项式回归 某种合金中的主要成分为金属A与金属B,经过实验与分析发现,这两种金属成分之和x与膨胀系数y之间有一定的关系。由下面的数据建立描述这种关系的数学表示。 金属成分和x=[37.0 37.5 38.0 38.5 39.0 39.5 40.0 40.5 41.0 41.5 42.0 42.5 43.0]; 膨胀系数y=[3.40 3.00 3.00 2.27 2.10 1.83 1.53 1.70 1.80 1.90 2.35 2.54 2.90]; 注:使用命令:a=polyfit(x,y,n) %求出n阶拟合多项式y=f(x)的系数; y1=polyval(a,x1) %求出f(x)在x1点的函数值,其中x1=37.0:0.5:43.0; plot(x,y,'*r',x1,y1,'-b') %比较原数据和拟合曲线效果; 问题2:非线性回归 设观测到的数据如下: x=20:10:210; y=[0.57 0.72 0.81 0.87 0.91 0.94 0.95 0.97 0.98 0.99 1.00 0.99 0.99 1.00 1.00 0.99 1.00 1.00 0.99 1.00]; 取回归函数为y=b(1)*(1-exp(-b(2)*x)),试估计参数b(1)、b(2)。 注:使用命令: [b,r,j]=nlinfit(x,y,fun,b0); %非线性回归,其中b0为参数初始值,可取 b0=[2,0.1],fun=inline('b(1)*(1-exp(-b(2)*x))','b','x')为内联函数; nlintool(x,y,fun,b0) %绘制非线性回归图。 程序及运行结果: 1、 >> x1=37:0.5:43; y1=[3.40 3.00 3.00 2.27 2.10 1.83 1.53 1.70 1.80 1.90 2.35 2.54 2.90]; >> plot(x1,y1)

最小二乘法的多项式拟合matlab实现

最小二乘法的多项式拟 合m a t l a b实现 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

用最小二乘法进行多项式拟合(matlab 实现) 西安交通大学 徐彬华 算法分析: 对给定数据 (i=0 ,1,2,3,..,m),一共m+1个数据点,取多项式P(x),使 函数P(x)称为拟合函数或最小二乘解,令似的 使得 其中,a0,a1,a2,…,an 为待求未知数,n 为多项式的最高次幂,由此,该问题化为求 的极值问题。由多元函数求极值的必要条件: j=0,1,…,n 得到: j=0,1,…,n 这是一个关于a0,a1,a2,…,an 的线性方程组,用矩阵表示如下:

因此,只要给出数据点 及其个数m ,再给出所要拟合的参数n ,则即可求出未知数矩阵(a0,a1,a2,…,an ) 试验题1 编制以函数 为基的多项式最小二乘拟合程序,并用于对下列数据作三次多项式最小二乘拟合(取权函数wi ≡1) x i y i 总共有7个数据点,令m=6 第一步:画出已知数据的的散点图,确定拟合参数n; x=::;y=[,,,,,,]; plot(x,y,'*') xlabel 'x 轴' ylabel 'y 轴' title '散点图' hold on {} n k k x 0=

因此将拟合参数n设为3. 第二步:计算矩阵 A= 注意到该矩阵为(n+1)*(n+1)矩阵, 多项式的幂跟行、列坐标(i,j)的关系为i+j-2,由此可建立循环来求矩阵的各个元素,程序如下: m=6;n=3; A=zeros(n+1); for j=1:n+1 for i=1:n+1 for k=1:m+1 A(j,i)=A(j,i)+x(k)^(j+i-2) end end

系统辨识及其matlab仿真(一些噪声和辨识算法)

【1】随机序列产生程序 【2】白噪声产生程序 【3】M序列产生程序 【4】二阶系统一次性完成最小二乘辨识程序 【5】实际压力系统的最小二乘辨识程序 【6】递推的最小二乘辨识程序 【7】增广的最小二乘辨识程序 【8】梯度校正的最小二乘辨识程序 【9】递推的极大似然辨识程序 【10】Bayes辨识程序 【11】改进的神经网络MBP算法对噪声系统辨识程序【12】多维非线性函数辨识程序的Matlab程序【13】模糊神经网络解耦Matlab程序 【14】F-检验法部分程序 【1】随机序列产生程序 A=6; x0=1;M=255; for k=1:100 x2=A*x0; x1=mod (x2,M); v1=x1/256; v(:,k)=v1; x0=x1; v0=v1; end v2=v k1=k; %grapher k=1:k1; plot(k,v,k,v,'r'); xlabel('k'), ylabel('v');title('(0,1)均匀分布的随机序列') 【2】白噪声产生程序 A=6; x0=1; M=255; f=2; N=100; for k=1:N x2=A*x0; x1=mod (x2,M); v1=x1/256; v(:,k)=(v1-0.5)*f; x0=x1;

v0=v1; end v2=v k1=k; %grapher k=1:k1; plot(k,v,k,v,'r'); xlabel('k'), ylabel('v');title('(-1,+1)均匀分布的白噪声') 【3】M序列产生程序 X1=1;X2=0;X3=1;X4=0; %移位寄存器输入Xi初T态(0101),Yi为移位寄存器各级输出m=60; %置M序列总长度 for i=1:m %1# Y4=X4; Y3=X3; Y2=X2; Y1=X1; X4=Y3; X3=Y2; X2=Y1; X1=xor(Y3,Y4); %异或运算 if Y4==0 U(i)=-1; else U(i)=Y4; end end M=U %绘图 i1=i k=1:1:i1; plot(k,U,k,U,'rx') xlabel('k') ylabel('M序列') title('移位寄存器产生的M序列') 【4】二阶系统一次性完成最小二乘辨识程序 %FLch3LSeg1 u=[-1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,1]; %系统辨识的输入信号为一个周期的M序列 z=zeros(1,16); %定义输出观测值的长度 for k=3:16 z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2); %用理想输出值作为观测值 end subplot(3,1,1) %画三行一列图形窗口中的第一个图形 stem(u) %画出输入信号u的经线图形 subplot(3,1,2) %画三行一列图形窗口中的第二个图形 i=1:1:16; %横坐标范围是1到16,步长为1 plot(i,z) %图形的横坐标是采样时刻i, 纵坐标是输出观测值z, 图形格式为连续曲线

最小二乘法Matlab自编函数实现及示例.docx

、最小二乘拟合原理 x= xl x2 ... xn y= yl y2 ... yn 求m 次拟合 ?力* y 卅…I ZA ; A T A = ZX 茁 X x i - X x i +1 ,- ? ? ? [函Oi …备F =⑷矿丄? A T y 所以m 次拟合曲线为y = a 0 +勿?怎+吐■审+???? +如■牙皿 二、 Matlab 实现程序 function p=funLSM (x, y, m) %x z y 为序列长度相等的数据向量,m 为拟合多项式次数 format short; A=zeros(m+l,m+l); for i=0:m for j=0:m A(i + 1, j + 1)=sum(x.A (i+j)); end b(i+1)=sum(x.A i.*y); end a=A\b 1; p=fliplr (a'); 三、 作业 题1:给出如下数据,使用最小二乘法球一次和二次拟合多项式(取小数点后3位) X 1.36 1.49 1.73 1.81 1.95 2.16 2.28 2.48 Y 14.094 15.069 16.844 17.378 18.435 19.949 20.963 22.495 解:

? x=[1.36 1.49 1.73 1. 81 1. 95 2. 16 2. 28 2. 48]: ? y=[14.094 15.069 16.844 17. 378 18.435 19.949 20.963 22.495]; >> p=funLSM(x, y? 1) P = 7.4639 3.9161 >> p=funLSM(x, y? 2) P = 0.3004 6.3145 4.9763 一次拟合曲线为: y = 7.464x+ 3.91S 二次拟合曲线为: y = +6.315^4-4.976 一次拟合仿真图

系统辨识MATLAB仿真

设一非线性系统如下所示: ()()() ()()111y k y k e u k k βαε--=-+-+ 0.75α= 0.35β=0.25γ=,()k ε是零均值,方差为0.01的噪声序列(均匀白噪声)。 (1)试设计一种激励信号能持续激励系统的各工作点(平衡点) (2)用适当的方法辨识出系统的等价模型(用另一组数据来检验模型的泛化性) 说明:下面讨论的都是离散系统,所以时间坐标均采用离散时间节点k 。 解: (1) 线性化处理寻找系统的合理输入信号 可以求得系统的平衡点为: ()0.75y k α== (1.1) 按题意要求最后系统必须收敛于平衡点附近,即: ()lim 0.75k y k →∞ = (1.2) 为了找出系统的合理输入信号,使得系统最终工作在平衡点附近,这里可以将系统线性化处理,将上述非线性系统进行泰勒展开得: ()()()()()()()2323111111112!3!! n n y k y k y k y k y k u k k n αβαβαβαβγε--+---++-=-+ 因为 ,后面()1y k -的高阶项都可以扔掉(只作为寻找输入信号使用), 所以系统可以化为下式: 此时不妨设系统输出()y k 的最后的极限为A , 从式1.2得0.75A =。 那么应该满足 ()()lim lim 1k k y k y k A →∞ →∞ =-= (1.5) 从而有 ()()()11A u k k αβγε-=-+ (1.6) 同时为了抵消系统的部分噪声,这里采用MA TLAB 软件编程产生另一服从同一分布的均匀噪声()1k ε,将式1.6变形得: ()()()0111 1u k u k k αβ εγ γ --= - (1.7) 式1.7中()0u k 是一个最后收敛于系统平衡点0.75的基本信号,这里可以采用一阶线性系统的阶跃响应曲线作为基本信号()0u k ,同时考虑系统的平衡点,即设计为: ()/00.75k T u k e -=- (1.8) T 是一阶线性系统对应的时间常数, 反应到输入基本信号()0u k 上就是过零点作()0u k 对应()()()()11y k y k u k k αβγε--=-+01αβ<(1.3) (1.4)

最小二乘法MATLAB程序及结果

最小二乘递推算法的MATLAB仿真 针对辨识模型,有z(k)-+a1*z(k-1)+a2*z(k-2)=b1*u(k-1)+b2*u(k-2)+v(k)模型结构,对其进行最小二乘递推算法的MATLAB仿真,对比真值与估计值。更改a1、a2、b1、b2参数,观察结果。 仿真对象:z(k)-1.5*z(k-1)+0.7*z(k-2)=u(k-1)+0.5*u(k-2)+v(k) 程序如下: L=15; y1=1;y2=1;y3=1;y4=0; %四个移位寄存器的初始值 for i=1:L; %移位循环 x1=xor(y3,y4); x2=y1; x3=y2; x4=y3; y(i)=y4; %取出作为输出信号,即M序列 if y(i)>0.5,u(i)=-0.03; %输入信号 else u(i)=0.03; end y1=x1;y2=x2;y3=x3;y4=x4; end figure(1); stem(u),grid on z(2)=0;z(1)=0; for k=3:15; z(k)=1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2); %输出采样信号 end c0=[0.001 0.001 0.001 0.001]'; %直接给出被识别参数的初始值 p0=10^6*eye(4,4); %直接给出初始状态P0 E=0.000000005; c=[c0,zeros(4,14)]; e=zeros(4,15); for k=3:15; %开始求k h1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]'; x=h1'*p0*h1+1; x1=inv(x); k1=p0*h1*x1; %开始求k的值 d1=z(k)-h1'*c0;c1=c0+k1*d1; e1=c1-c0; e2=e1./c0; %求参数的相对变化 e(:,k)=e2; c0=c1; c(:,k)=c1; p1=p0-k1*k1'*[h1'*p0*h1+1]; %求出P(k)的值 p0=p1;

曲线拟合_线性最小二乘法及其MATLAB程序

1 曲线拟合的线性最小二乘法及其MATLAB 程序 例7.2.1 给出一组数据点),(i i y x 列入表7–2中,试用线性最小二乘法求拟合曲线,并用(7.2),(7.3)和(7.4)式估计其误差,作出拟合曲线. 表7–2 例7.2.1的一组数据),(y x 解 (1)在MATLAB 工作窗口输入程序 >> x=[-2.5 -1.7 -1.1 -0.8 0 0.1 1.5 2.7 3.6]; y=[-192.9 -85.50 -36.15 -26.52 -9.10 -8.43 -13.12 6.50 68.04]; plot(x,y,'r*'), legend('实验数据(xi,yi)') xlabel('x'), ylabel('y'), title('例7.2.1的数据点(xi,yi)的散点图') 运行后屏幕显示数据的散点图(略). (3)编写下列MA TLAB 程序计算)(x f 在),(i i y x 处的函数值,即输入程序 >> syms a1 a2 a3 a4 x=[-2.5 -1.7 -1.1 -0.8 0 0.1 1.5 2.7 3.6]; fi=a1.*x.^3+ a2.*x.^2+ a3.*x+ a4 运行后屏幕显示关于a 1,a 2, a 3和a 4的线性方程组 fi =[ -125/8*a1+25/4*a2-5/2*a3+a4, -4913/1000*a1+289/100*a2-17/10*a3+a4, -1331/1000*a1+121/100*a2-11/10*a3+a4, -64/125*a1+16/25*a2-4/5*a3+a4, a4, 1/1000*a1+1/100*a2+1/10*a3+a4, 27/8*a1+9/4*a2+3/2*a3+a4, 19683/1000*a1+729/100*a2+27/10*a3+a4, 5832/125*a1+324/25*a2+18/5*a3+a4] 编写构造误差平方和的MATLAB 程序 >> y=[-192.9 -85.50 -36.15 -26.52 -9.10 -8.43 -13.12 6.50 68.04]; fi=[-125/8*a1+25/4*a2-5/2*a3+a4, -4913/1000*a1+289/100*a2-17/10*a3+a4, -1331/1000*a1+121/100*a2-11/10*a3+a4, -64/125*a1+16/25*a2-4/5*a3+a4, a4, 1/1000*a1+1/100*a2+1/10*a3+a4, 27/8*a1+9/4*a2+3/2*a3+a4, 19683/1000*a1+729/100*a2+27/10*a3+a4, 5832/125*a1+324/25*a2+18/5*a3+a4]; fy=fi-y; fy2=fy.^2; J=sum(fy.^2) 运行后屏幕显示误差平方和如下 J= (-125/8*a1+25/4*a2-5/2*a3+a4+1929/10)^2+(-4913/1000*a1+2 89/100*a2-17/10*a3+a4+171/2)^2+(-1331/1000*a1+121/100*a2-11/10*a3+a4+723/20)^2+(-64/125*a1+16/25*a2-4/5*a3+a4+663/25)^2+(a4+91/10)^2+(1/1000*a1+1/100*a2+1/10*a3+a4+843/100)^2+(27/8*a1+9/4*a 2+3/2*a3+a4+328/25)^2+(19683/1000*a1+729/100*a2+27/10*a3+a4-13/ 2)^2+(5832/125*a1+324/25*a2+18/5*a3+a4-1701/25)^2 为求4321,,,a a a a 使J 达到最小,只需利用极值的必要条件0=??k a J )4,3,2,1(=k ,

M序列辨识 Matlab程序 系统辨识

M序列发生程序 function [out]=Mseries(order) %M-series function % by Chen Hao,2011/12/16 for i=1:order x(i)=1; end for n=1:252 y(1:2)=x(order-1:order); for i=order:-1:2 x(i)=x(i-1); end x(1)=xor(y(1),y(2)); out(n)=1-2*x(order); end stem(out); end 计算程序 function [out]=addfunction( A,B,order,n ) %addfunction % by Chen Hao,2011/12/9 order=n*order; for i=1:order out(i)=0; end for k=0:order-1 for i=0:order-1 out(k+1)=out(k+1)+A(i-k+order+1)*B(i+1); end end for k=1:order out(k)=(out(k)-out(order))/(order+1); end end 主程序 function main() %Main function % by Chen Hao,2011/12/9 out=Mseries(6); time=1:252; simin=[time' out']; assignin('base','simin',simin); sim('Mseries_distinguish'); z=simout.signals.values(2:253); out=[out out]; g=addfunction(out,z,63,4); g=g(1:63); plot(g); num=[1 2]; den=[3 1 1]; s=tf(num,den); t=0:62; h=impulse(s,t);

matlab最小二乘法

4. 设某物理量Y与X 满足关系式Y=aX2+bX+c,实验获得一批数据如 下表,试辨识模型参数a,b和c 。(50分) X 1.01 2.03 3.02 4.015 6.027.038.049.0310 Y9.6 4.1 1.30.40.050.10.7 1.8 3.89.0单,最后给出结果及分析。 (1) 问题描述: 由题意知,这是一个已知模型为Y=aX2+bX+c,给出了10组实验输入输出数据,要求对模型参数a,b,c进行辨识。这里对该模型参数辨识采用递推最小二乘法。 (2) 参数估计原理 对该模型参数辨识采用递推最小二乘法,即RLS(recurisive least square),它是一种能够对模型参数进行在线实时估计的辨识方法。 其基本思想可以概括为:新的估计值=旧的估计值+修正项 下面将批处理最小二乘法改写为递推形式即递推最小二乘参数估计的计算方法。 批处理最小二乘估计为,设k时刻的批处理最小二乘估计为: 令 K时刻的最小二乘估计可以表示为 = =;式中,因为要推导出P(k)和K(k)的递推方程,因此这里介绍一下矩阵求逆引理:设A、(A+BC)和(I+)均为非奇异方阵,则通过运用矩阵求逆引理,把复杂的矩阵求逆转化为标量求倒数,大大减小了计算量。与间的递推关系。最终得到递推最小二乘参数递推估计公式如下: (3)程序流程图 (如右图1所示) 递推最小二乘法(RLS)步骤如下: 已知:、和d。 Step 1 :设置初值和P(0),输入初始数据; Step2 :采样当前输出y(k)、和输入u(k) Step3 :利用上面式计算、和; Step4 :kk+1,返回step2,继续循环。

最小二乘法曲线拟合的Matlab程序

方便大家使用的最小二乘法曲线拟合的Matlab程序 非常方便用户使用,直接按提示操作即可;这里我演示一个例子:(红色部分为用户输入部分,其余为程序运行的结果,结果图为Untitled.fig,Untitled2.fig) 请以向量的形式输入x,y. x=[1,2,3,4] y=[3,4,5,6] 通过下面的交互式图形,你可以事先估计一下你要拟合的多项式的阶数,方便下面的计算. polytool()是交互式函数,在图形上方[Degree]框中输入阶数,右击左下角的[Export]输出图形 回车打开polytool交互式界面 回车继续进行拟合 输入多项式拟合的阶数m = 4 Warning: Polynomial is not unique; degree >= number of data points. > In polyfit at 72 In zxecf at 64 输出多项式的各项系数 a = 0.0200000000000001 a = -0.2000000000000008 a = 0.7000000000000022 a = 0.0000000000000000 a = 2.4799999999999973 输出多项式的有关信息 S R: [4x5 double] df: 0 normr: 2.3915e-015 Warning: Zero degrees of freedom implies infinite error bounds. > In polyval at 104 In polyconf at 92 In zxecf at 69 观测数据拟合数据 x y yh 1.0000 3.0000 3.0000 2.0000 4.0000 4.0000 3 5 5 4.0000 6.0000 6.0000 剩余平方和 Q = 0.000000 标准误差 Sigma = 0.000000 相关指数 RR = 1.000000 请输入你所需要拟合的数据点,若没有请按回车键结束程序. 输入插值点x0 = 3 输出插值点拟合函数值 y0 = 5.0000

相关文档
最新文档