- "X" is a design matrix of predictor (independent variable) values, with one row for each value in "Y", and one column for each predictor.
- "Y" for fitting the nonlinear regression function, specified as a vector with the same number of rows as "X".
- Nonlinear regression model function, specified as a function handle. "modelfun" must accept two input arguments, a coefficient vector and an array "X" respectively and return a vector of fitted response values.
nlinfit error too many input arguments in the model function
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am trying to use the nlinfit and for the model, i definded a function for it. it keeps on showing error caused by Too many input arguments. I tried lowring the input arguments many time but it still did not work. in the code A, B, C and D, are all 4*4 matrices.
[th,R,J,COVB,mse] = nlinfit(U,Y,@(th,U)getlabel(th,U),th0,options);
function y = getlabel(th,pass)
global dsystem;
global Yall;
global TH;
dsystem.init = 0;
timestep = 120;
shift_val = 0.8;
th = 0.6;
U = pass.U;
PARANOM = pass.paranom;
nstates= pass.nstates;
ninputs= pass.ninputs;
ndata = pass.ndata;
xinter = pass.xinter;
paralist = cat(2,PARANOM.rvalues,PARANOM.cvalues);
TH = paralist.*(1 + sin(th)*shift_val);
sys = ss(A,B,C,D);
sysd = c2d(sys,timestep);
Ad = sysd.A; Bd = sysd.B;
Cd = sysd.C; Dd = sysd.D;
Yall=zeros(4,4);
for i = 1:ndata
xinter = (X(i,:)) * Ad + (U(i,:)) * Bd ;
Yall(i,:) = ((X(i,:)) * Cd ) + ((U(i,:)) * Dd );
end
y = Yall;
end
0 commentaires
Réponses (1)
SAI SRUJAN
le 31 Oct 2023
Hi Hani Alkhatib,
I understand that you are facing an issue using the "nlinfit" MATLAB function.
The error "Too many input arguments" in the nlinfit function occurs when the number of input arguments provided to the model function is not consistent with the expected number of arguments.
You can follow the given example to proceed further.
modelfun = @(b,x)(b(1)+b(2)*exp(-b(3)*x));
rng('default') % for reproducibility
b = [1;3;2];
x = exprnd(2,100,1);
y = modelfun(b,x) + normrnd(0,0.1,100,1);
beta0 = [2;2;2];
beta = nlinfit(x,y,modelfun,beta0)
% The correct nlinfit format for getLabel
% [th,R,J,COVB,mse] = nlinfit(U,Y,@getlabel,th0,options);
The function "nlinfit" has specific conditions that need to be met by the input parameters.
For a comprehensive understanding of the "nlinfit" function in MATLAB, please refer to the provided documentation below,
0 commentaires
Voir également
Catégories
En savoir plus sur Nonlinear Regression dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!