0

我的曲线拟合有问题,我必须使用这个方程 a+bx^2.5+cx^3.5 来拟合一组点(x 和 y)。我已经尝试使用 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);

提前致谢。

4

1 回答 1

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 的值。谢谢……

于 2012-12-28T06:19:04.957 回答