Vectorization of for loop

B = randi(10x5);
x = randi(10x40);
y = randi(10x1);
% Modelfun = equation to fit
% I can do a for loop like this:
for i=1:10
[beta(i,:)]=nlinfit(x(i,:),y(i,:),modelfun,B)
end
Can I do vectorization? for example 10 fittings all at once, without using loops? or maybe using @cellfun or @arrayfun?

1 comentario

KSSV
KSSV el 15 de Jul. de 2021
Editada: KSSV el 15 de Jul. de 2021
cellfun, arrayfun also uses loop inside...

Iniciar sesión para comentar.

Respuestas (1)

Jayant Gangwar
Jayant Gangwar el 15 de Jul. de 2021

0 votos

It seems to me that you want to avoid the use of loops for finding all the rows of beta, You can do it by directly passing the complete x matrix and y vector to the nlinfit function, It will automatically save the answer in different rows of beta. An example of the same is given below-
S = load('reaction');
X = S.reactants; % 13x3 matrix
y = S.rate; % 13x1 vector
beta0 = S.beta;
[beta,R,J,CovB,MSE,ErrorModelInfo] = nlinfit(X,y,@hougen,beta0,'ErrorModel','combined');
beta
This is an example given in the documentation for nlinfit, for more information please take a look at the documentation for nlinfit - Nonlinear regression - MATLAB nlinfit (mathworks.com)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Productos

Versión

R2021a

Preguntada:

el 15 de Jul. de 2021

Respondida:

el 15 de Jul. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by