- 8
- 0
- 约3.47千字
- 约 7页
- 2017-01-06 发布于北京
- 举报
基于Matlab仿真的线性与非线性动态系统建模教学方法探讨.doc
基于Matlab仿真的线性与非线性动态系统建模教学方法探讨
[摘要]本文采用Matlab仿真产生模拟的可用于线性与非线性动态系统建模的输入输出数据。根据这些数据,设计程序生成建模所需的数据矩阵。同时给出了最小二乘法、最大似然估计、BP神经网络、RBF神经网络建模的样例程序。为学生熟悉、比较及应用各种线性与非线性动态系统建模方法提供了条件。
[关键词]动态系统建模 仿真 人工神经网络
在讲授完线性与非线性动态系统建模方法基本理论以后,需要让学生进行上机实验[1]以达到以下目的:1进一步加深理解学习的基本理论;2各种参数的选择对建模效果的影响;3各种建模方法的优缺点及适用场合。为了达到这些目的,我们模拟实际应用时的情况,提供给学生模拟的输入输出数据,以便学生利用这些数据,进行编程建立模型。同时我们编程实现基于最小二乘法、最大似然估计、BP神经网络、RBF神经网络的动态系统建模方法[2,3],学生可以利用这些Matlab程序进行各种方法的学习、各种情况下建模效果的对比,以及各种方法的适用场合的对比。
一、 基于Matlab仿真的线性动态系统最小二乘法建模的教学
假设系统的差分方程为:y(k)=-a1y(k-1)-a2y(k-2)-…-any(k-n)+b0u(k)+b1u(k-1)+…+bmu(k-m)+e(k)。其中y(k)为输出,u(k)为输入,e(k)为模型残差。假定建模用的数据序列从y(k)开始,则构建以下数据矩阵及数据向量:
如果模型残差为白噪声(实际情况多为有色噪声,但当噪声强度不大时,可近似当作白噪声处理),则根据最小二乘法,由这 组数据估计得到的参数 。
以上的最小二乘法需要输入(u(K-m),u(K-1),…,u(K+N-1))和输出(y(K-n),y(K-n+1),…,y(K+N-1))数据,我们可用以下的Matlab程序(程序1)产生模拟的输入输出数据(程序中采用了一个简单的二阶离散系统,学生实验时可换成需要的模型),并形成数据矩阵及数据向量。
程序1:
clear all
K=3;%残差序列开始序号
N=1000;%共N组数据
n=2;%对应
m=2;%对应
u=randn(1,K+N-1)*0.1;%随机产生输入数据
for i=1:1:n
y(i)=0;%设定初始状态
end
for k=n+1:1:K+N-1
y(k)=0.2*y(k-1)+0.5*y(k-2)+u(k)+0.3*u(k-1);%根据输入计算输出
end
y=y+randn(1,K+N-1)*0.001; %在求得的单位阶跃响应上叠加噪声用以模拟测量误差
X=zeros(N,n+m+1);
for i=K:1:K+N-1
for j=1:1:n
X(i-K+1,j)=y(i-j);%构成矩阵X
end
for j=n+1:1:n+m+1
X(i-K+1,j)=u(i-j+n+1); %构成矩阵X
end
end
for i=K:1:K+N-1
Y(i-K+1)=y(i);%构成向量Y
end
save X X;
save Y Y;
save N N;
运行程序1将生产数据矩阵X(保存在X.mat中)及数据向量Y(保存在Y.mat中)。以下是根据最小二乘法估计参数的程序(程序2)。
程序2:
clear all
load X;
load Y;
XT=X;
sita=(XT*X)^(-1)*XT*Y%计算得到估计的参数sita
运行程序2,将得到估计的参数sita。如某一次运行中sita=[0.2004,0.4998,0.9998,0.2995,-0.0005]T,与模型中的值(见程序1)a1=0.2,a2=0.5,b0=1,b1=0.3,b2=0非常接近。
二、 基于Matlab仿真的线性动态系统最大似然估计建模的教学
在模型残差为白噪声的假设下,最大似然估计和最小二乘法在估计参数时是相同的,但最大似然估计还能估计出噪声的强度,程序3为相应的程序。
程序3:
clear all
load X;
load Y;
load N;
XT=X;
sita=(XT*X)^(-1)*XT*Y
Z=Y-X*sita;
StdV=sqrt(Z*Z/N)%估计标准差
运行程序3,得到和程序2一样的参数估计值,除此之外,还能得到噪声的标准差(或方差)。如某一次的运行结果为StdV=0.0011,和模型中值(见程序1)0.
原创力文档

文档评论(0)