关于模型预测的matlab程序?
采用下面的MATLAB程序对该对象进行脉冲响应模型辨识,脉冲响应模型预测输出与预测误差曲线:%将多项式的传递函数模型转换为MPC传递函数模型num=[11];den=[1...
采用下面的MATLAB程序对该对象进行脉冲响应模型辨识,脉冲响应模型预测输出与预测误差曲线:
% 将多项式的传递函数模型转换为MPC传递函数模型
num=[1 1];den=[1 3 6]; h=tf(num,den); % 获得脉冲信号x
[u,t]=gensig('pulse',2,10,0.1); x=u;
% 求解LTI对象的单位脉冲响应y t=0:0.1:10;
[y,x,t]=lsim(h,x,t); 此段是从百度文库里看到的
% 输入脉冲信号x的归一化处理 [ax,mx,stdx]=autosc(x); mx=0;
Sx=scal(x,mx,stdx);
% 生成用于线性回归计算的输入/出数据矩阵 n=35;
[xreg,yreg] = wrtreg(Sx,y,n);
% 基于多变量最小二乘法的脉冲响应模型辨识 ninput=1; plotopt=2;
[theta,yres]=mlr(xreg,yreg,ninput,plotopt);
这是百度文库里的一个程序,得到图像为
但是第6行在李国勇的智能控制及matlab实现的书中该行语句是[y,x1,t1]=lsim(h,x,t);
并且图像变为了
请问各位高手[y,x1,t1]和[y,x,t]是什么区别?为什么会导致两图的误差曲线不一致?还有图中分别有实际输出,预测输出及输出误差的曲线,那么实际输出,预测输出是那两条呢?初学模型预测,先感谢各位了 展开
% 将多项式的传递函数模型转换为MPC传递函数模型
num=[1 1];den=[1 3 6]; h=tf(num,den); % 获得脉冲信号x
[u,t]=gensig('pulse',2,10,0.1); x=u;
% 求解LTI对象的单位脉冲响应y t=0:0.1:10;
[y,x,t]=lsim(h,x,t); 此段是从百度文库里看到的
% 输入脉冲信号x的归一化处理 [ax,mx,stdx]=autosc(x); mx=0;
Sx=scal(x,mx,stdx);
% 生成用于线性回归计算的输入/出数据矩阵 n=35;
[xreg,yreg] = wrtreg(Sx,y,n);
% 基于多变量最小二乘法的脉冲响应模型辨识 ninput=1; plotopt=2;
[theta,yres]=mlr(xreg,yreg,ninput,plotopt);
这是百度文库里的一个程序,得到图像为
但是第6行在李国勇的智能控制及matlab实现的书中该行语句是[y,x1,t1]=lsim(h,x,t);
并且图像变为了
请问各位高手[y,x1,t1]和[y,x,t]是什么区别?为什么会导致两图的误差曲线不一致?还有图中分别有实际输出,预测输出及输出误差的曲线,那么实际输出,预测输出是那两条呢?初学模型预测,先感谢各位了 展开
展开全部
我没有自己看你的程序,不过通过图可以看得清楚啊,实际输出用‘o’表示,预测的用‘+’表示。第一个图估计是初始化,也就是第一步,预测还没有开始,还是相等的点。而下图表示,已经预测结束,与实际基本吻合。
追问
可是程序中除了[y,x1,t1]=lsim(h,x,t);,没看到哪一句用到了x1,t1?x1,t1出现在其它哪个语句里呢?
追答
作者,[y,x1,t1]=lsim(h,x,t) 和[y,x,t]=lsim(h,x,t)没有任何区别,输入参数是一致的,输出也是一致的,只是他换了个符号表达而已,结果就是 x1=x,我觉得你要真正理解他是怎么做的,这个图只是帮助你理解,他表达的就像我给你解释的那样。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询