Info

此问题已关闭。 请重新打开它进行编辑或回答。

How can I get fixed output in ode45

1 次查看(过去 30 天)
Hüseyin Cagdas Yatkin
关闭: MATLAB Answer Bot 2021-8-20
I only get 20 output with this code. How can I get fixed output?
clc
clear
Cmeasured = [0 101 160 239 645 766 766 827 1122 1158 1591 2181 2566 2654 2944 3163 3406 3751 3982 3982 4425 4621 4746 4809 5240 5479 5604 5761 5885 5885 515418 515511 515511 516128 516203 516203 516252 516554 516991 517579 517969 518040 518040 518315 518566 518818 519166 519426 519426 519864 519969 520125 520125 520275 520441 520584 520723 520793 520793 536458 536540 536540 1562585 1562585 1562861 1561528 1561753 1562065 1562947 1562947
];
tspan = 0:1:1562947;
sol = ode45(@mt ,tspan ,[8.850 2] );
plot(sol.x',sol.y')
cagdas = sol.y';
function y = mt(t, C)
Cin = 1.800;
Kd = 0.00125/(24*60); %1/min
KL = 0.29/(24*60); %m/day
kl = 0.29/(24*60); %1/min
hw = 74.75; %depth of lake m
A = 18500*10^6; %Area m^2
L = 311*10^3; %Length m
Qin = 6400*60; %Inflow(niagara) m^3/min
Qout = 6700*60; %Outflow m^3/min
hs = 0.07; %depth of sediment that have DCB concentration m
Vw = hw*A; %Volume of water body m^3
Vs = hs*A*10^6; %Volume of sediment m^3
wt = 106/(365*24*60);
y(1) = ( Qin*Cin -(Qout)*C(1)- KL*A*C(1)-Kd*Vw*C(1)-kl*A*C(1))/Vw;
y(2) = (KL*A*C(1)-KL*A*C(2) - Kd*Vs*C(2))/Vs;
y=y(:);
end

回答(1 个)

Cris LaPierre
Cris LaPierre 2020-3-18
Use the following calling syntax instead. This results in a value in y corresponding to each time point specified in tspan.
tspan = 0:1:1562947;
[t,y] = ode45(@mt ,tspan ,[8.850 2] );
plot(t,y(:,1),t,y(:,2))

此问题已关闭。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by