Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-05-31
年龄: 39
帖子: 10
声望力: 17 ![]() |
![]()
函数如下
function [sys,x0,str,ts] =csbsmk(t,x,u,flag,X,Y) %X为100*5的矩阵 X=[x.',x.'.*(abs(x)),x.'.*((abs(x.')).^2),x.'.*((abs(x.')).^3),x.'.*((abs(x.')).^4)];Y=[1,linspace(0,0,99)].'; C=[1 0 0 0 0]; switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes(x,X,Y,C) case 1, sys=mdlDerivatives(t,x,u); case 2, sys=mdlUpdate(t,x,u,X,Y); case 3, sys=mdlOutputs(t,x,u,X,Y,C); function [sys,x0,str,ts]=mdlInitializeSizes(x,X,Y,C) sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 100; sizes.NumOutputs = 1; sizes.NumInputs = 2; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1; sys = simsizes(sizes); x0 = rand(1,100); str = []; ts= [0.001 0]; function sys=mdlUpdate(t,x,u,X,Y) sys = myupdate(X,Y,u); function sys=mdlOutputs(t,x,u,X,Y,C) sys = C(1); function [C]=myupdate(X,Y,u) for k=1:1:99 X(k, ![]() ![]() Y(k, ![]() ![]() end X(100, ![]() Y(100)=u(2); C = inv(X'*X)*X'*Y; 当我运行仿真时,总是有错误信息说X尺寸是1*500。我用单步执行看了一下,出现在flag=0时,这时X是1*500的矩阵,再往下就是100*5的了。 不知道为什么X在开始时总是1*500的矩阵,我改了两天了,还是没结果,请达人帮告诉一下啊,谢谢了! ps:我是一名大四的学生,这是我的毕业设计,做不出来就毕不了业了:cry: ,请打好心达人帮助啊! |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2008-05-31
年龄: 39
帖子: 10
声望力: 17 ![]() |
![]()
毛病就出在那行红色代码上。
|
![]() |
![]() |