MATLAB は変数を無名関数と共に格納します。これがドキュメントからどのように機能するかの例を次に示します。
式の変数:
関数ハンドルは、式だけでなく、式の評価に必要な変数も格納できます。
たとえば、係数 a、b、c を必要とする無名関数の関数ハンドルを作成します。
a = 1.3; b = .2; c = 30; parabola = @(x) a*x.^2 + b*x + c;
a、b、および c は放物線の作成時に使用できるため、関数ハンドルにはこれらの値が含まれます。変数をクリアしても、値は関数ハンドル内に保持されます。
clear a b c x = 1; y = parabola(x) y = 31.5000
おそらく、ab と c の値は、関数が保存され、mat ファイルから再読み込みされた場合でも、関数と共に保存されます。実際には、特に関数を最初に作成したコードが編集された場合、これらの値は保持されないことがわかりました。
変数の数値に関して関数ハンドルを定義する方法はありますか? 私はフォームの何かをしたいです
>> a = 1.3;
>> b = .2;
>> c = 30;
>> parabola = @(x) a*x.^2 + b*x + c
parabola = @(x) a*x.^2+b*x+c
>> parabola2 = forceEval(parabola)
parabola2 = @(x) 1.3*x.^2+.2x+30
編集:おそらく私の問題はファイルの関連付けにありますが、最初に匿名関数を定義したファイルを編集すると、次のようなエラーが表示されます:
関数 @(ydata)nr/(na*dt)*normpdf(ydata,mu(j),s(j))./normpdf(ydata,mu_a(j),s_a(j)) が C: 内に見つかりません。 ..\mファイル名.m. (ここで、mfile の名前を mfilename に変更しました)
この種のものに対する私の通常の解決策は、 func2str() を使用してファイルの依存関係を削除することですが、これにより、パラメーター値を含むワークスペース情報も削除されます。そのため、関数定義ですべてのパラメーターに数値を強制的に適用したいと思います。