作业帮 > 综合 > 作业

matlab 这是一个画全维观测器的程序,错误提示为 应该怎么改啊?function dx=ax3(t,x)d

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 00:59:00
matlab
这是一个画全维观测器的程序,错误提示为
 

应该怎么改啊?
function dx=ax3(t,x)
dx=[x(2)
    -48.6*x(1)-1.26*x(2)+48.6*x(3)+21.6*sin(x(2))
    10*x(4)
    1.95*x(1)-1.95*x(3)-0.333*sin(x(1))
    x(6)+5.1734*(x(1)-x(5))-5.0069*(x(2)-x(6))
    -48.6*x(5)-1.26*x(6)+48.6*x(7)+21.6*sin(x(6))-4.3407*(x(1)-x(5))
    -4.1015*(x(2)-x(6))
    10*x(8)
    1.95*x(5)-1.95*x(7)-0.333*sin(x(5))+1.0759*(x(1)-x(5))+1.0166*(x(2)-x(6))]
tspan=[0 10];
x0=[1 2 1 0 1 2 0 0.5]';
[t,x]=ode15s(@ax3,tspan,x0);
e1=x(:,1)-x(:,5);
e2=x(:,2)-x(:,6);
e3=x(:,3)-x(:,7);
e4=x(:,4)-x(:,8);
plot(t,x(:,1),'r*',t,x(:,5),'o')
xlabel('t')
legend('状态量x_{1}','状态量x_{1}的估计')
figure
plot(t,e1)
xlabel('t');
ylabel('状态量x_{1}与其估计量的误差e_{1}')
figure
plot(t,x(:,2),'r*',t,x(:,6),'o')
xlabel('t')
legend('状态量x_{2}','状态量x_{2}的估计')
figure
plot(t,e2)
xlabel('t')
ylabel('状态量x_{2}与其估计量的误差e_{2}')
figure
plot(t,x(:,3),'r*',t,x(:,7),'o')
xlabel('t')
legend('状态量x_{3}','状态量x_{3}的估计')
figure
plot(t,e3)
xlabel('t');
ylabel('状态量x_{3}与其估计量的误差e_{3}')
figure
plot(t,x(:,4),'r*',t,x(:,8),'o')
xlabel('t')
legend('状态量x_{4}','状态量x_{4}的估计')
figure
plot(t,e4)
xlabel('t');
ylabel('状态量x_{4}与其估计量的误差e_{4}')
matlab 这是一个画全维观测器的程序,错误提示为 应该怎么改啊?function dx=ax3(t,x)d
函数在此处定义无效;
注意不要直接再命令窗口中定义函数,要写成m文件.
再问: 针对这个程序 应该怎么写啊?怎么改啊?
再答: 你这只用把代码写进m文件就可以了。。。。过程如下:(或是File>>New>>Script)写好后,保存(文件名和函数名要一致);在命令窗口中调用文件名即可。给个好评呗~~
再问: 写进M文件的代码 就是这个程序的第一句吗?“function dx=ax3(t,x)” 还有 怎么调用,我不太会用matlab。 只要能运行 肯定给你好评
再答: 对啊,m文件第一句就是function dx=ax3(t,x),然后保存,文件名为ax3.m;调用时在命令窗口中调用ax3(XX,XX)
再问: 保存了,文件名也建立了,整体程序中的第一句应该是什么呢现在?
再答: 那你直接调用这个函数就可以了。。根据你的代码,传进去的参数是矩阵。。可以在命令窗口调用试一试。。
再问: 整体程序中 第一句 直接写 ax3(t,x); 吗?
再答: 嗯嗯,也可以给一个返回值,其中你的参数要已知。。matlab这个东西,你可以大胆的去尝试。。有错误matlab会有提示。。自己应该看得懂。
再问: 现在的错误是: ??? Undefined function or variable 't'.
再答: 未定义变量t;跟你说了啊,传进去的参数要是已知的。。。你自己定义一个 啊