为什么我得到的错误“太多的输入参数”?

8视图(30天)
Ben25
Ben25 2019年6月21日
回答: 瓦莱丽爱2019年10月26日
我试图运行一个非线性灰色盒子估计,但当我运行代码来估计未知参数,它说我有太多的输入参数。我确定匹配的尺寸iddata对象和idnlgrey对象,所以我不知道我的问题所在。
错误的是:
> > DOF2grey
错误使用iddata / nlgreyest(59行)
在指定的ODE文件错误或不匹配“DOF2greyfxn”。
错误信息是:“太多的输入参数”。
错误DOF2grey(20)行
nlgr = nlgreyest (estdata nlgr,选择);%估计未知参数(nlgr)
我的代码如下所示:
文件名=“DOF2greyfxn”;%调用模型文件
订单= (4 2 4);%的输出、输入状态
%支票簿,看看4输入是必要的状态方程式
全球情况ωm1 m2 k1 k2 c1 c2
参数={情况,ω,m1, m2, k1, k2, c1, c2};
InitialStates = [0;0;0;0);% x1位置,x1 velo x2 pos, x2 velo
t = 0;%样本时间=连续时间
nlgr = idnlgrey(文件名、秩序、参数、InitialStates Ts,“名字”,“DOF2grey”);%设置nlgrey对象
setpar (nlgr“固定”,{真的真的真的真的真的真的假的假});%告诉matlab哪些参数估计(c1, c2)
nlgr = setinit (nlgr,“固定”,{假假假假});%告诉matlab估计初始状态(所有人)
estdata = iddata (x, u, 10/1417153);%根据ode45_2DOF创建数据对象,输入(u)、产出(x),样品时间=数据点/总时间
选择= nlgreyestOptions (“显示”,“上”);%显示估计的进展
nlgr = nlgreyest (estdata nlgr,选择);%估计未知参数(nlgr)
%使用estdata作为输入参数,estdata和nlgr必须有相同的输入和输出维度
礼物(nlgr)
大小(estdata)
比较(estdata nlgr)
它使用这个函数模型nlgrey对象:
% 6-20-19
函数(dx, y) = DOF2greyfxn (t, x, u,情况,ω,m1, m2, k1, k2, c1, c2)
y = [x (1), (2); x (3); x (4)];
dx = [x (2); (((k1, k2) / m1) * x(1) +((往上平移- c2) / m1) * x (2) + (k2 / m1) * x (3) + (c2 / m1) * x (4) + (k1 / m1) * u (1) + (c1 / m1) * u (2))
x (4);((k2 / m2) * x (1) + (c2 / m2) * x (2) + (k2 / m2) * x (3) + (c2 / m2) * x (4)));
结束
从这个函数,它使用这个数据和相应的数值文件创建iddata对象:
函数(dx, y) = DOF2damped (t, x)
情况= 1;%振幅()
ω= 1;%赫兹
m1 = 0.85048569375;%公斤
m2 = 0.7370876;%公斤
k1 = 100000;% N / m 35
k2 = 356.9085;% N / m
c1 = 100000;% N / m * s
c2 = 1;% N / m * s
u =[情况*罪(ω* t);情况*ω* cosω* t)];
y = [x (1), (2); x (3); x (4)];x1dot % x1, x2, x2dot
dx = [x (2); (((k1, k2) / m1) * x(1) +((往上平移- c2) / m1) * x (2) + (k2 / m1) * x (3) + (c2 / m1) * x (4) + (k1 / m1) * u (1) + (c1 / m1) * u (2))
x (4);((k2 / m2) * x (1) + (c2 / m2) * x (2) + (k2 / m2) * x (3) + (c2 / m2) * x (4)));
结束
%如果内部变量被定义为全局函数,将永远运行
ode文件:
清晰的
关闭所有
clc
全球情况ωm1 m2 k1 k2 c1 c2
tspan = (10 0);
x0 = (0, 0, 0, 0);
(t, x) =数值(@ (t, x) DOF2damped (t, x) tspan, x0);
u =[(情况* sin(ω* t)),(情况*ω* cos(ω* t)));
情节(t, x, t, u)
感谢任何帮助
2的评论
Ben25
Ben25 2019年6月23日
我得到同样的错误使用默认选项

登录置评。

答案(1)

瓦莱丽爱
瓦莱丽爱 2019年10月26日
涂油礼 (dx, y) = DOF2greyfxn (t, x, u,情况,ω,m1, m2, k1, k2, c1, c2,变长度输入宗量)
y = [x (1), (2); x (3); x (4)];
dx = [x (2); (((k1, k2) / m1) * x(1) +((往上平移- c2) / m1) * x (2) + (k2 / m1) * x (3) + (c2 / m1) * x (4) + (k1 / m1) * u (1) + (c1 / m1) * u (2))
x (4);((k2 / m2) * x (1) + (c2 / m2) * x (2) + (k2 / m2) * x (3) + (c2 / m2) * x (4)));
结束
试试这个,再次运行代码。

类别

找到更多的在灰色矩形模型估计帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!