confusing error message: 'Not enough input arguments'?

1 view (last 30 days)
Valeri Aronov
Valeri Aronov on 24 Feb 2021
Edited: Valeri Aronov on 27 Feb 2021
function [f] = Simple(x)
f = (x(1)-1).^2 + (x(2)-1).^2;
and running:
x = lsqnonlin(Simple, [2.0, 2.0])
I am getting:
Not enough input arguments.
Error in Simple (line 2)
f = (x(1)-1).^2 + (x(2)-1).^2;
2 f = (x(1)-1).^2 + (x(2)-1).^2;
What is going on here?

Accepted Answer

Star Strider
Star Strider on 24 Feb 2021
With a function in that format, it is necessary to pass a function handle to lsqnonlin (or any other function that takes a function handle argument):
x = lsqnonlin(@Simple, [2.0, 2.0])
That is not the situation for anonymous functions that are already function handle objects:
Simple = @(x) (x(1)-1).^2 + (x(2)-1).^2;
x = lsqnonlin(Simple, [2.0, 2.0])
x =
1.000244655961070 1.000244655961070
See What Is a Function Handle? for details.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!