9

一連の点が(x,y)あり、MATLABを使用して原点を通過する最適な線を見つける必要があります。

4

3 に答える 3

14

要するに:あなたの関数はの形でなければならずy=ax+0、それはpolyfit役に立たない。ただし、最小二乗法を使用できます。

 a = x(:)\y(:);

説明:

n方程式と、見つける必要のある1つの変数がaあります。

 a*x1 = y1;
 a*x2 = y2;
 ...
 a*xn = yn;

オペレーター\は最小二乗解を見つけます。

または、手動で解決策を見つけることもできます。

 a = (x'*x) \ (x'*y);

または擬似コード:

     (x1*y1 + x2*y2  + ... xn*yn)
a =  ----------------------------
     (x1*x1 + x2*x2  + ... xn*xn)

これは、Matlabを使用していない場合(Cコードなど)に役立ちます。


例とコードスニペット:

ここに画像の説明を入力してください

function FindLSSolution()
    a = 2.5;
    x = rand(100,1)*10;
    y = a*x + randn(100,1);
    figure;scatter(x,y);

    A = x(:)\y(:);
    hold on;plot(x, A*x,'g');
end
于 2012-09-19T13:17:42.710 に答える
3

「カーブフィッティングツールボックス」をお持ちの場合は、

f = fit( x, y, 'a*x' );
于 2012-09-19T13:27:16.583 に答える
2

一般に、最適な線はデータの重心を通過します(xの平均とyの平均)。したがって、図心を見つけて、原点から図心までの線をプロットします。

于 2021-02-27T22:28:33.830 に答える