一連の点が(x,y)
あり、MATLABを使用して原点を通過する最適な線を見つける必要があります。
14102 次
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 に答える