0

私はmatlabで次の問題を解決しようとしています。データとして入力される5つのパラメーターと4つの変数で定義される関数があります。私はそれを次のように定義します。

g = @(b)((b(4)*(b(2)*x(:,1) + b(3)*x(:,2) + 1)) + b(5)*x(:,3)*x(:,4).^b(1));

次に、この関数のエラーを最小限に抑えるパラメーターの値を見つけたいと思います。これは次のように定義します。

sum_res = @(b)(y-g)'*(y-g); [beta_opt,fval] = fminsearch(sum_res,[1,1]);

次のエラー メッセージが表示されます。

Undefined function 'minus' for input arguments of type 'function_handle'.

Error in @(b)(y-g)'*(y-g)


Error in fminsearch (line 191)
fv(:,1) = funfcn(x,varargin{:});
4

1 に答える 1

1

エラーメッセージは的を射ています。g値型ではなく、関数ハンドルです。y-gしたがって、関数で減算を実行する場合sum_res、関数ハンドルをオペランドとして受け入れる減算演算子はありません (関数ハンドルをどのように減算しますか?)

関数内の関数ハンドルにパラメーターbを渡すのを忘れただけのようです(b が実際に目的のパラメーターであると仮定します)。gsum_res

sum_res = @(b)(y-g(b))'*(y-g(b)); 
于 2013-04-22T03:58:37.953 に答える