0

Matlab を使用して、poly1 曲線を使用して 2 つの座標 (x、y) にデータを当てはめています。

問題は、フィッティング ラインを長くする方法が見つからないことです。

(180, 930) から (191, 944) までが必要ですが、代わりに、Matlab はデータの近くにフィッティング ラインを描画します。これは、これら 2 つの座標の間にあります。

私を助けることができるfitコマンド(またはcftoolのいくつかの設定)への引数はありますか?

さらに、cftool で「軸の制限を調整する」オプションを試しましたが、まったく役に立ちませんでした。

既出の質問を検索しましたが、これに関連するものは見つかりませんでした。私はこのプログラムに慣れていないので、これがばかげた質問だったらごめんなさい、よろしくお願いします、ジョバンニ

編集:最初の画像のコードは次のとおりです。

[FitUp,goodnessUP] = fit(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,2),'poly1')
[FitDown,goodnessDOWN] = fit(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,3),'poly1')
plot(FitUp,'b')
hold on
plot(FitDown,'b')
hold on
errorbar(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,2),AKaterMatrix1msDX(:,4),'--r')
hold on
errorbar(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,3),AKaterMatrix1msDX(:,4),'--r')

2 番目のコードは次のとおりです。

[FitUp,goodnessUP] = fit(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,2),'poly1')
[FitDown,goodnessDOWN] = fit(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,3),'poly1')
plot(FitDown,'b')
hold on
plot(FitUp,'b')
hold on
errorbar(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,2),AKaterMatrix1msDX(:,4),'--r')
hold on
errorbar(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,3),AKaterMatrix1msDX(:,4),'--r')

ここで 2 つの適合を見つけることができます。最初の適合はトリミングされていないように見えますが、2 番目の適合は次のhold onとおり です docs.google.com/file/d/0B749BCu7mnZHeDVTOGRuSkktUmc/edit?usp=sharing

4

2 に答える 2

0

ホールドを設定するタイミングと方法に注意する必要があります。最初にダミーデータを作成します

AKaterMatrix1msDX(:, 1) = 185:189;
AKaterMatrix1msDX(:, 2) = 2*rand(5, 1)+933;
AKaterMatrix1msDX(:, 3) = 2*rand(5, 1)+940;
AKaterMatrix1msDX(:, 4) = 2*rand(5, 1);

次に、これが重要な部分です。軸を希望どおりに設定し、ホールドをオンにします

figure
axis([180, 191, 930, 944]);
hold on

これはまさにあなたがしたことをします

[FitUp,goodnessUP] = fit(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,2),'poly1')
[FitDown,goodnessDOWN] = fit(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,3),'poly1')
plot(FitUp,'b')
hold on
plot(FitDown,'b')
hold on
errorbar(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,2),AKaterMatrix1msDX(:,4),'--r')
hold on
errorbar(AKaterMatrix1msDX(:,1),AKaterMatrix1msDX(:,3),AKaterMatrix1msDX(:,4),'--r')

ここに画像の説明を入力

于 2013-10-19T16:50:19.757 に答える
0

多くの当てはめ統計が必要ない場合は、polyfit続いてpolyval当てはめを得ることができます。

X = AKaterMatrix1msDX(:,1);
Y = AKaterMatrix1msDX(:,2);
dY = AKaterMatrix1msDX(:,4);
[a,S] = polyfit(X,Y)
extraPlotRange = 10;
newX = linspace(min(X)-extraPlotRange,max(X)+extraPlotRange,100);

[fitY,delta] = polyval(a,newX);

plot(X,Y)
hold on
plot(newX,fitY)
plot(newX,fitY+delta,':b')
plot(newX,fitY-delta,':b')
errorbar(X,Y,dY,'--r')
hold off

残念ながら、これは必要な適合度統計量と同じではなく、適合度の信頼区間のみを提供します。

を使用したい場合の他のオプションは、fitを使用してフィット係数を取得することcoeffvaluesです。これらの適合係数は、 から取得したものと同じになりますpolyfit

aUp = coeffvalues(FitUp);
aDown = coeffValues(FitDown);

fitYup = polyval(aUp,newX);
fitYdown = polyval(aDown,newX);

于 2013-10-19T16:00:07.450 に答える