필터 지우기
필터 지우기

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))

답변 (1개)

KSSV
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

카테고리

Help CenterFile Exchange에서 String Parsing에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by