Not enough input arguments in Schaffer
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Though I'm new to Matlab, I can't believe I could get this wrong. Matlab told me" Error using Schaffer (line 2) Not enough input arguments." But I can't find the problem and fix it. The following is my code--really simple, Please help me, thanks a lot!
function f=Schaffer(x)
f=0.5+((sin((x(1)^2+x(2)^2)^(1/2)))^2-0.5)/(1+0.001*(x(1)^2+x(2)^2))^2;
x0=[-10,10];
[x,fval]=fminsearch(Schaffer,x0);
end
1 Kommentar
Antworten (1)
Abhishek
am 3 Mär. 2025
Hi,
It looks like you're running into a common issue when working with function handles in MATLAB. The error you're encountering stems from attempting to define the function and call it within the same file. I tried this in MATLAB R2024b, and I faced the same issue.
In MATLAB, functions can either be saved in function files or script files, but script files cannot share the same name as a function within the file.
Additionally, functions must be declared at the start, and the name of the file must match the name of the first function if saved in a function file. Please refer to the below documentation which explains that functions can either be defined in a function file that only contains the function definition, or in a script file that contains function definitions and commands. https://www.mathworks.com/help/releases/R2024b/matlab/ref/function.html
In order to resolve this issue, you can define the function in a separate file and call it from another file. You may try following the below steps to achieve this in MATLB R2024b:
- Define the function in a file named “Schaffer.m”:
function f = Schaffer(x)
f = 0.5 + ((sin((x(1)^2 + x(2)^2)^(1/2)))^2 - 0.5) / (1 + 0.001 * (x(1)^2 + x(2)^2))^2;
end
2. Call the function from another file. I have created a file named “Test.m” in the same directory as “Schaffer.m” and called it from there:
x0 = [10, -10];
[x, fval] = fminsearch(@Schaffer, x0);
disp('Optimised values of x:');
disp(x);
disp('Function value at the optimum (fval):');
disp(fval);
3.Run the “Test.m” file. The output is as follows:
>> Test
Optimised values of x:
12.0419 -10.0666
Function value at the optimum (fval):
0.1782
Hope this solves the issue .
0 Kommentare
Siehe auch
Kategorien
Mehr zu Random Number Generation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!