Not enough input arguments.
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Anonymous Chupacabra
le 26 Avr 2015
Commenté : Anonymous Chupacabra
le 27 Avr 2015
I have a file called F.m which contains the following code:
1 % INPUT:
2 % 3D vector x
3 %
4 % OUTPUT:
5 % function value at x
6
7 function val = f(x)
8 val= x(1)^2 + x(1)*x(2)^3 - 12*x(3) + 4;
9 end
I am trying to call F.m in an algorithm in another file, but when I run the code, I get the following error:
"Error using F (line 8) Not enough input arguments."
I'm new to MATLAB, so I'm not sure what I'm doing wrong here. Any help would be greatly appreciated!
2 commentaires
Aaron Powers
le 26 Avr 2015
Could you include the code that calls your function f, with an example of what x is?
Réponse acceptée
the cyclist
le 26 Avr 2015
With the syntax
Algorithm1(F, gradf, [0,1,2], 0.1, 0.1, 10)
MATLAB is looking for a variable named F (and similarly with gradf). You need to tell it that F is a function, by passing the function handle:
Algorithm1(@F, @gradf, [0,1,2], 0.1, 0.1, 10)
It looks like you have similar problems deeper in your code, but I could not resolve them completely because I don't have all the functions you are using.
Plus de réponses (1)
Jan
le 26 Avr 2015
Modifié(e) : Jan
le 26 Avr 2015
Inside this line:
[a, b] = Algorithm2(f, xk, dk, T);
you call the function "f" without arguments. But You want top provide the function handle of this file instead:
[a, b] = Algorithm2(@f, xk, dk, T);
Note: In modern Matlab versions you can omit the feval and call the function handle directly, which looks nicer:
while norm(gradf(xk)) >= tol1
Voir également
Catégories
En savoir plus sur Specifying Target for Graphics Output dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!