Not enough input arguments

My code is:
eq=@eqq;
CF=@(u,t, eq)(eq(u,q44, t, t1)*1000*eq(u,q44, t, t1) + u'*1*u);
J=integral(CF,0,T);
where eqq is handwritten function in separate file:
function eqq1 = eqq(u,q44, t, t1)
tdif = intmax;
ideal = 0;
for i=1:length(t)
if (tdif>abs(t(i)-t1))
tdif = abs(t(i)-t1);
ideal = i;
end
eqq1 = q44(ideal);
end
after running my code, I get error in line
CF=@(u,t, eq)(eq(u,q44, t, t1)*1000*eq(u,q44, t, t1) + u'*1*u);
It says that error is following:
Not enough input arguments.
Error in costfunctionalone>@(u,t,eq)(eq(u,q44,t,t1)*1000*eq(u,q44,t,t1)+u'*1*u)
How to solve that problem?

1 commentaire

James Tursa
James Tursa le 14 Mai 2019
eq is the name of the built-in element-wise "equals" operator in MATLAB. I would strongly advise you pick a different variable name.

Réponses (1)

Adam Danz
Adam Danz le 5 Mai 2019
Modifié(e) : Adam Danz le 14 Mai 2019

0 votes

The integral function integrates your function from u=0 to u=T but you never provide values for "t" or "eq" which are the 2nd and 3rd inputs to your function CF.
Follow this example to numerically integrate a parameterized function.
It will look something like this:
J=integral(@(x)CF(x,t,eq),0,T);
where t and eq are constants you provide as the 2nd and 3rd inputs to CF().

Cette question est clôturée.

Clôturé :

le 20 Août 2021

Community Treasure Hunt

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

Start Hunting!

Translated by