not enough input data

1 view (last 30 days)
Alessandro Papetti
Alessandro Papetti on 21 Mar 2021
Edited: Stephan on 21 Mar 2021
I don't understand why MATLAB says to me that there are not enough input data in this code. Can you help me?
function dydt=Step1(t,y)
Q=1000;
F=8;
m=100;
cp=2.5;
Ti=300;
T=y(1);
dTdt=(Q/(m*cp))-(F/m*cp)*(T-Ti);
dydt=[dTdt]';
  2 Comments
Christopher McCausland
Christopher McCausland on 21 Mar 2021
How are you calling this function? I am guessing that you do not pass Step the inputs its looking for (t,y). Here is more information. https://uk.mathworks.com/matlabcentral/answers/53100-not-enough-input-arguments. Let us see how you call the function, there are some other problems that can cause the same issue like MATLAB expecting the input arguments in a specific format.
Alessandro Papetti
Alessandro Papetti on 21 Mar 2021
sure, here it is the call
clc
clear all
close all
format compact
format short g
Q=1000;
F=8;
m=100;
cp=2.5;
Ti=300;
%steady state solution (of T)
Toutss=(Q/(F*cp))+Ti;
tspan=[0: 150];
T0=300;
options=odeset('RelTol',1e-8,'AbsTol',1e-12);
[t,T]=ode15s(@(t,T)Step1(t,T,Q,F,cp,Ti,m),tspan,T0,options);
T1=T(:,1);
tspan=[150 300];
T00=max(T); %è uguale a Toutss
[t1,T2]=ode15s(@(t1,T2)Step2(t1,T2,Q,F,cp,Ti,m),tspan,options);
plot(t,T1,'b',t1,T2,'r');

Sign in to comment.

Accepted Answer

Stephan
Stephan on 21 Mar 2021
Edited: Stephan on 21 Mar 2021
Note that i used the same function for step2 like step1 to make it work - replace step2 with the correct function. Also i assumed that T00 is the initial value for step2 - you shpould check this for correctness:
format compact
format short g
% Call nested function
myODE
function myODE
% constants
Q=1000;
F=8;
m=100;
cp=2.5;
Ti=300;
%steady state solution (of T)
Toutss=(Q/(F*cp))+Ti;
% Step 1
tspan=[0,150];
T0=300;
options=odeset('RelTol',1e-8,'AbsTol',1e-12);
[t,T]=ode15s(@Step1,tspan,T0,options);
% Step 2
T1=T(:,1);
tspan=[150 300];
T00=max(T); %è uguale a Toutss
[t1,T2]=ode15s(@Step2,tspan,T00,options);
plot(t,T1,'b',t1,T2,'r');
function dydt=Step1(~,y)
T=y(1);
dTdt=(Q/(m*cp))-(F/m*cp).*(T-Ti);
dydt=dTdt';
end
function dydt=Step2(~,y)
T=y(1);
dTdt=(Q/(m*cp))-(F/m*cp).*(T-Ti);
dydt=dTdt';
end
end

More Answers (0)

Community Treasure Hunt

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

Start Hunting!