Minimizing a multivariable anonymous function that contains vectors using fminsearch
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
I am trying to minimize I0 and a in the function handle below. rBes and rCutFit are vectors with the same dimensions. The variables, wave, a, C, u, and r are constants that have already been defined in the script.
R2=@(I0,a) (rBes(u)-I0*((2*rCutFit((((2*pi)/wave)*a*sin(atan((u*C)/r))))/(((2*pi)/wave)*a*sin(atan((u*C)/r))))^.2)).^2; MIN=fminsearch(R2,[1,10^-6]);
I keep getting the error below everytime I run the code. Please let me know if you have any advice for fixing this.
"Not enough input arguments.
Error in @(I0,a)(rBes(u)-I0*((2*rCutFit((((2*pi)/wave)*a*sin(atan((u*C)/r))))/(((2*pi)/wave)*a*sin(atan((u*C)/r))))^.2)).^2
Error in fminsearch (line 189) fv(:,1) = funfcn(x,varargin{:});"
0 Commenti
Risposte (1)
James Tursa
il 22 Lug 2017
Make R2 accept a vector input. E.g., use x as the argument and replace I0 with x(1) and a with x(2)
R2=@(x) (rBes(u)-x(1)*((2*rCutFit((((2*pi)/wave)*x(2)*sin(atan((u*C)/r))))/(((2*pi)/wave)*x(2)*sin(atan((u*C)/r))))^.2)).^2;
MIN=fminsearch(R2,[1,10^-6]);
9 Commenti
Walter Roberson
il 23 Lug 2017
Arrays (and vectors) have particular sizes at any one time, and are indexed with () notation and what follows in the () must be a list of positive integers, possibly together with colons.
Functions also use () notation to invoke them, and can have non-integral arguments that are function parameters.
You cannot use non-integral values (other than colon) in the () after a vector name (except in intermediate calculations provided the overall result of the calculation is positive integer).
If you need to perform a calculation on a non-integral argument and get a vector or array output, then you should make rCutFit into a function that does the appropriate bessel calculation and removes whatever and reshapes as is suitable.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
