0

私はmatlabでnonlinearfitツールを使用しています。次のエラーが発生し続けます。

nlinfit の使用エラー (210 行目) MODELFUN は、Y (1 行 100 列) と同じサイズの近似値のベクトルを返す関数でなければなりません。指定したモデル関数は、1 行 2 列の結果を返しました。サイズが一致しない一般的な理由の 1 つは、対応する要素単位の演算子 (. 、./、.^)ではなく、関数で行列演算子 ( 、/、^) を使用することです。

この質問は私のものと非常に似ていることがわかりましたが、それでも同じエラーが発生します。ベクトルを入力として使用しながら、コンソールでmyfunを計算しようとしました。これにより、正しい次元の出力が得られます。間違いを指摘していただけると大変助かります。

% Defining the function
myfun = @(t,b)exp(t.*b(1)+b(2));
[y_a] = arrayfun(myfun,x_a);
% Using nonlinear least square minimization
beta0 = [1 1];
nlinfit(x,y,myfun, beta0)

前もって感謝します...:)

編集:これが機能していることがわかりました。 g = fittype('exp(k*x + a)'); [fit1,gof,fitinfo] = fit(x',y',g,'StartPoint',[1 1]);

4

1 に答える 1

0

nlinfitで使用される関数は、最初の引数としてパラメーター ベクトルを取り、次に独立したデータ ベクトルを取ります。あなたが望む、

myfun = @(b,t)exp(t.*b(1)+b(2));

*この場合でも、ではなく単に使用できることに注意してください.*

于 2016-01-11T06:02:45.383 に答える