Non Linear regression

% name: myfun.m file
function yhat = myfun(beta,X)
b1 = beta(1); %(Feight multiplier)
b2 = beta(2); %(Freight rate multiplier)
e = X(1); %(Economic growth)
p = X(2); %(Previous year freight)
r = X(3); %(Real freight rate change)
yhat = p*(1.0+(e*b1))*(1.0+(r*b2));
inputs are
x=(11,3) Matrix
y= (11,1) Matrix
beta0 = rand(11,2) Matrix
when i run the script i get the following;
beta = nlinfit(X,y,'myfun',beta0)
??? Error using ==> nlinfit at 127
MODELFUN should return a vector of fitted values the same length as Y.
I dont understand what the error is can someone please help.
Thanks in advance

 Réponse acceptée

Greg Heath
Greg Heath le 14 Oct 2011

0 votes

% name: myfun.m file
function yhat = myfun(beta,X)
b1 = beta(1); %(Freight multiplier)
b2 = beta(2); %(Freight rate multiplier)
e = X(:,1); %(Economic growth)
p = X(:,2); %(Previous year freight)
r = X(:,3); %(Real freight rate change)
yhat = p.*(1.0+(e*b1)).*(1.0+(r*b2));
inputs are
x=(11,3) Matrix
y= (11,1) Matrix
beta0 = rand(11,1) Matrix
Hope this helps
Greg

Plus de réponses (1)

bym
bym le 13 Oct 2011

0 votes

try changing these lines:
e = X(1); %(Economic growth)
p = X(2); %(Previous year freight)
r = X(3); %(Real freight rate change)
to
e = X(:,1); %(Economic growth)
p = X(:,2); %(Previous year freight)
r = X(:,3); %(Real freight rate change)
(untested)

Catégories

En savoir plus sur Get Started with MATLAB dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by