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

KSSV
KSSV 2021년 7월 15일
편집: KSSV 2021년 7월 15일
cellfun, arrayfun also uses loop inside...

댓글을 달려면 로그인하십시오.

답변 (1개)

Jayant Gangwar
Jayant Gangwar 2021년 7월 15일

0 개 추천

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)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품

릴리스

R2021a

질문:

2021년 7월 15일

답변:

2021년 7월 15일

Community Treasure Hunt

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

Start Hunting!

Translated by