Info
This question is closed. Reopen it to edit or answer.
Not enough input arguments
2 views (last 30 days)
Show older comments
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 Comment
James Tursa
on 14 May 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.
Answers (1)
Adam Danz
on 5 May 2019
Edited: Adam Danz
on 14 May 2019
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.
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().
0 Comments
This question is closed.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!