Error : "Too many input arguments"

1 vue (au cours des 30 derniers jours)
amine&&
amine&& le 3 Jan 2017
Commenté : Star Strider le 3 Jan 2017
Hello, wi type this code in matlab :
f = @(x)mseFunction(x(1),x(2),y,yS);
H=feval(f,xc(1),xc(2));
I get the following error :
Error using @(x)mseFunction(x(1),x(2),y,yS)
Too many input arguments.
Error in projbfgs (line 65)
H=feval(f,xc(1),xc(2));
I do not know where i made the mistake. Thanks!

Réponse acceptée

Star Strider
Star Strider le 3 Jan 2017
Modifié(e) : Star Strider le 3 Jan 2017
If I remember correctly from your earlier Question, ‘mseFunction’ only has three arguments. If you want to pass it ‘y’ as well, you have to re-write the function definition to include it:
function MSE = mseFunction(alpha,beta,y,yS)
...REST OF YOUR CODE ...
end
EDIT Please do not use feval here. Just call your function as:
H = f(x);
assuming that ‘y’ and ‘yS’ are already in your workspace.
  4 commentaires
amine&&
amine&& le 3 Jan 2017
Hi. The problem is not solved.
Star Strider
Star Strider le 3 Jan 2017
I created a version of your function for testing purposes in my function testing ‘.m’ file.
When I ran the following code with it, it ran without error:
function MSE=mseFunction(alpha,beta,y,yS)
MSE = [alpha beta; y yS];
end
xc = [100; 102];
y = 20;
yS = 50;
f = @(x)mseFunction(x(1),x(2),y,yS);
H = f(xc)
H =
100 102
20 50
I cannot reproduce the problem you are getting.

Connectez-vous pour commenter.

Plus de réponses (1)

Niels
Niels le 3 Jan 2017
Modifié(e) : Niels le 3 Jan 2017
Hi,
yes, your defined f as a function with only 1 inputargument
f = @(x)mseFunction(x(1),x(2),y,yS);
but then you want it to have 2:
H=feval(f,-->xc(1),xc(2)<--);
so your x has to be a vector with length 2...
try
H=feval(f,xc);
or set f to
f = @(x1,x2)mseFunction(x1,x2,y,yS);
and
H=feval(f,xc(1),xc(2));
  2 commentaires
Star Strider
Star Strider le 3 Jan 2017
That won’t work here (see the previous Question Calculate the optimum of a function). The ‘mseFunction’ is an objective function for an optimisation routine, and takes a vector of parameters as an argument.
amine&&
amine&& le 3 Jan 2017
Hello Niels. I get this error :
Error using mseFunction
Too many input arguments.
Error in @(x1,x2)mseFunction(x1,x2,y,yS)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by