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 に答える