Not enough input arguments

4 views (last 30 days)
Dear experts,
I am quite new in MATLAB usage. Recently I have written a code to curvefit my experimental values. However, I am getting issues with insufficient input arguments which seems to be very common. I read through previous similar questions, but could not find a specific solution to the issue.
Tries with the main function
function F = HolzapfelFitting23_new(x,lamda)
1) Passing HolzapfelFitting23_new(x,lamda) in the Command Window gives me: "Not enough input arguments"
2) Whereas, providing HolzapfelFitting23_new(x0,lamda) in the Command Window gives me a different error:
Caused by:
Failure in initial objective function evaluation. LSQCURVEFIT cannot continue
I am not sure if the second step is itself correct. Can anyone please help me trace the error in the attached code to perform curve fit? I am using MATLAB R2020b.
Thank you all very much in advance.
Bests,
AB
  3 Comments
Ankit
Ankit on 2 Oct 2020
Do you have license for optimisation toolbox? if not please read below answer
https://de.mathworks.com/matlabcentral/answers/486650-equivalent-to-lsqcurvefit-without-the-need-of-the-optimisation-toolbox
aroj bhattarai
aroj bhattarai on 2 Oct 2020
Hello Ankit, Thank you for your prompt response. I did that before using the function. With predefined input valus, calculation of F is okay (graphics confirm). But whenever optimset and lsqcurvefit are activated, initial objective function evaluation fails. Also, changing x0 to x inside the code gives an "unknown function or variable x" in lsqcurvefit usage line.
AB

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 2 Oct 2020
Edited: Walter Roberson on 2 Oct 2020
1) Passing HolzapfelFitting23_new(x,lamda) in the Command Window gives me: "Not enough input arguments"
In that environment, x is not a variable: x is a function (x.m) or is a static method of a class, and it is being invoked with no arguments by you referencing it.
Check with
which x
class(x)
  3 Comments
Walter Roberson
Walter Roberson on 2 Oct 2020
I think the problem is not x being unrecognized inside HolzapfelFitting23_new .
I think when you are calling the function by using
HolzapfelFitting23_new(x,lamda)
that at that point that x is a function rather than a variable. I do not mean a function handle, I mean that there is an x.m on your path or that you have import()'d an x or you have a static method named x in a class you have loaded. That is, I suspect that that line is attempting to execute x, and that the execution fails because you are not passing in the parameters the function x expects.
aroj bhattarai
aroj bhattarai on 2 Oct 2020
Thank you Roberson, I looked for other possibility by splitting my entire matlab script into two different files. First file calculates the value of the function F = HolzapfelFitting23_new(x,lamda) with indexed lamda. In second file, I provided all necessary parameters for curvefit, "x0, lamda, sig, lb, ub and options". It gave me what I wished for.
Good weekend!
AB

Sign in to comment.

More Answers (0)

Categories

Find more on Historical Contests in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!