0

私はMatlabのいくつかのデータポイントに1次の指数曲線を当てはめようとしています(2次も作成します)。ここ StackOverflow の別の質問で説明されている方法を使用しようとしましたが、次のメッセージしか表示されません: 'Error in ==> fit at 115 errstr = handleerr('curvefit:fit:xDataMustBeColumnVector', ... '。

これは私のコードです:

hold on

X = (1x8-vector containing data);
Y = (1x8-vector containing data);
Error = (1x8-vector containing data);

YError = Y.*Error;

ft = fittype('exp1');
f = fit(X, Y,ft);

errorbar(X, Y, YError, 'squarek','MarkerFaceColor','k')
plot(f,X,Y)

「フィット」は指数曲線の係数を返す必要があることを知っているので、最後の「プロット」が機能しないことを認識しています。現在、係数を出すことさえできません。

4

1 に答える 1

1

1x8 ベクトルは行ベクトルです。8x1 ベクトルは列ベクトルになります。これは些細な違いのように思えるかもしれませんが、コードの動作に影響を与えるため、fit では size(X,2) が 1 または 2 である必要があります (コマンド ラインで edit fit.m と入力すると、これを確認できます)。 )。

確かに、得られたエラーは少し不透明です。R2011b スロー (iFit と fit の正しい行番号付き):

X は、1 列または 2 列の行列でなければなりません。

X', Y' だけでこの問題は解決します (または、X と Y を生成するコードを調整して、最初に列ベクトルを取得します)。

于 2013-08-07T09:58:58.287 に答える