[討論] 求高手大大幫忙
我是matlab新手 但是學校出了一個用ode23解ode的作業
能幫我看看我哪邊有錯嗎
跑出來的結果
Error using nargout
Error: File: func_1.m Line: 32 Column: 82
Unexpected MATLAB expression.
Error in odearguments (line 35)
if exist(ode)==2 && ( nargout(ode)<3 && nargout(ode)~=-1 )
Error in ode23 (line 113)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in Main (line 4)
[t,x]=ode23('func_1',[1;2;5./57.3;1;1;0;0;0;0]);
以下是副程式程式碼
function xdot=func_1(t,x)
xdot(1)=x(4);
xdot(2)=x(5);
xdot(3)=x(6);
%Kp值在主程式
tou1=Kp*(x(1)-xd)+Kd*x(4);
tou2=Kp*(x(2)-yd)+Kd*x(5);
tou3=Kp*(x(3)-sid)+Kd*x(6);
tou=[tou1;tou2;tou3];
s=sin(x(3));c=cos(x(3));tan=tan(x(3));
J=[c -s 0;s c 0;0 0 1];
tou4=inv(J')*tou;
Ix=18.41;Iz=14.32;dn=0;Xudot=0;Yvdot=0;Yrdot=0;m=1.8782;Xg=2;Nrdot=0;
m11=m-Xudot;m22=m-Yvdot;m33=Ix-Nrdot;m23=m*Xg-Yrdot;m32=m*Xg-Yrdot;c13=-(m-Yvdot)v-(m*Xg-Yrdot)*x(9);c31=-c13;c33=0
M=[m11*cos(x(3)^2)+m22*sin(x(3)^2)
m11*cos(x(3))*sin(x(3))-m22*cos(x(3))*sin(x(3)) -m23*sin(x(3))
m11*cos(x(3))*sin(x(3))-m22*cos(x(3))*sin(x(3))
m11*cos(x(3)^2)+m22*sin(x(3)^2) m23*sin(x(3))
-m23 m23*cos(x(3)) m33];
C=[-xdot(3)*sin(x(3))*cos(x(3))*(m11-m22)
xdot(3)*(m11-m11*sin(x(3)^2)+m22sin(x(3)^2)) c13*cos(x(3))-c23sin(x(3))
xdot(3)*m11*cos(x(3)^2)-xdot(3)*m11-xdot(3)*m22*cos(x(3)^2)
xdot(3)*cos(x(3))*sin(x(3))*(m11-m22) c23*cos(x(3))+C13*sin(x(3))
c23*sin(x(3))-c13*cos(x(3))-xdot(3)*m23*cos(x(3))
-c23*cos(x(3))-c13*sin(x(3))-xdot(3)*m23*sin(x(3)) c33];
G=inv(M)*(-C);
xdot(4)=(G(1,1)*x(4)+G(1,2)*x(5)+G(1,3)*x(6))+G(1,1)*tou4(1,1);
xdot(5)=(G(2,1)*x(4)+G(2,2)*x(5)+G(2,3)*x(6))+G(2,1)*tou4(2,1);
xdot(6)=(G(3,1)*x(4)+G(3,2)*x(5)+G(3,3)*x(6))+G(3,1)*tou4(3,1);
xdot(7)=(1/m)*x(9)*x(8)+tou1/m;
xdot(8)=(1/m)*(-x(7))*x(9)+tou2/m;
xdot(9)=0+tou3/Iz;
xdot=xdot'
主程式程式碼
clear all;clc;close all;
[t,x]=ode23('func_1',[1;2;5./57.3;1;1;0;0;0;0]);
xd=0;
yd=200;
sid=atan((yd-x(2))/(xd-x(1)));
Kp=500;
Ki=0;
Kd=0.2;
figure(1);
plot(x(:,1),x(:,2));
xlabel('x');ylabel('y');
grid on;
hold on;
麻煩您了 因為是新手 程式碼很臭很長 可以幫我糾正一下哪邊有錯
小弟會感激不盡的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.130.182