im modelling for two mass drive train , i could not able to know why an index exceed error
조회 수: 1 (최근 30일)
이전 댓글 표시
function dy= two_mass2(ta,te,k,d,jt,jg,y)
x=y(1);
y=y(2);
dxdt=y(3);
dydt=y(4);
d2xdt2=((1./jt)*(ta-d*(dxdt-d*dydt)-k*(x-y)));
d2ydt2=((1./jg)*(-te-d*(dydt-d*dxdt)-k*(y-x)));
dy=[dxdt;dydt;d2xdt2;d2ydt2];
end
clc
clear all
close all
ta=11198;
te=11937;
jt=995.8;
jg=81.2;
d=30.3;
k=19720;
tspan=[0 5000];
y0=[ 125;125;100;100];
[Tsol,Ysol]= ode45(@(t,y)two_mass2(ta,te,d,k,jt,jg,y),tspan,y0);
plot(Tsol,Ysol(:,1))
댓글 수: 0
답변 (1개)
KSSV
2023년 2월 15일
편집: KSSV
2023년 2월 15일
function dy= two_mass2(ta,te,k,d,jt,jg,y)
x=y(1);
y=y(2);
dxdt=y(3);
dydt=y(4);
d2xdt2=((1./jt)*(ta-d*(dxdt-d*dydt)-k*(x-y)));
d2ydt2=((1./jg)*(-te-d*(dydt-d*dxdt)-k*(y-x)));
dy=[dxdt;dydt;d2xdt2;d2ydt2];
end
In the above function your input y to the function is 4*1 and in this line:
y=y(2);
you are overwrititng y. Change the variable y at input to some other variable.
Like shown below:
ta=11198;
te=11937;
jt=995.8;
jg=81.2;
d=30.3;
k=19720;
tspan=[0 5000];
y0=[ 125;125;100;100];
[Tsol,Ysol]= ode45(@(t,y)two_mass2(ta,te,d,k,jt,jg,y),tspan,y0);
plot(Tsol,Ysol(:,1))
function dy= two_mass2(ta,te,k,d,jt,jg,Y) %<----- y changed to Y
x=Y(1);
y=Y(2);
dxdt=Y(3);
dydt=Y(4);
d2xdt2=((1./jt)*(ta-d*(dxdt-d*dydt)-k*(x-y)));
d2ydt2=((1./jg)*(-te-d*(dydt-d*dxdt)-k*(y-x)));
dy=[dxdt;dydt;d2xdt2;d2ydt2];
end
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 String Parsing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!