confusing error message: 'Not enough input arguments'?

Having:
function [f] = Simple(x)
f = (x(1)-1).^2 + (x(2)-1).^2;
end
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?

댓글 수: 2

Thanks, Star. It was helpful, inlike Matlab's error message ;-(
As always, my pleasure!

댓글을 달려면 로그인하십시오.

 채택된 답변

Star Strider
Star Strider 2021년 2월 24일
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])
producing:
x =
1.000244655961070 1.000244655961070
See What Is a Function Handle? for details.
.

추가 답변 (0개)

질문:

2021년 2월 24일

편집:

2021년 2월 27일

Community Treasure Hunt

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

Start Hunting!

Translated by