nlinfit Matlab函数等效函数c代码

时间:2012-12-20 07:28:14

标签: c matlab visual-c++ curve-fitting data-fitting

我有曲线拟合的问题,我必须使用这个等式拟合点(x和y) a + bx ^ 2.5 + cx ^ 3.5。我已经尝试使用nlinfit函数从matlab曲线拟合工具箱中获取它。现在我想将其转换为c / c ++。有没有办法从matlab转换它或者是否有任何用c / c ++执行的库。

x = [0 90 180 270]';
y = [201 173 118 146]';
modelfun = @(b,x)(b(1)+ b(2).*x.^2.5+ b(3).*x.^3);
opts = statset('nlinfit');
beta0 = [0;0;0];
beta = nlinfit(x,y,modelfun,beta0,opts);
disp(beta);
 b = beta;
y1 = b(1)+ b(2).*x.^2.5 + b(3).*x.^3;
disp(y1);

提前致谢。

1 个答案:

答案 0 :(得分:0)

最后,我得到了这个nlinfit的非常简单的答案....  Matlab代码是

modelfun = @(b,x)(b(1)+ b(2).*x.^2.5+ b(3).*x.^3);
opts = statset('nlinfit');
beta0 = [0;0;0];
beta = nlinfit(x,y,modelfun,beta0,opts);
% % % disp(beta);
b = beta;
y1 = b(1)+ b(2).*x.^2.5 + b(3).*x.^3;
% disp(y1);

等效函数是由此派生创建的

Ax = B;
%multiply with A' Then 
(A'*A)*x=(A'*b)
% x=(A'*A)/(A'*b)% similar to inv(A'*A)*(A'*b)
coeff1 = inv(A'*A)*(A'*B);
disp(coeff1);

使用这些系数,我们可以使用上面的等式轻松找到Y的值。 谢谢你......