2017-05-13 8 views
-2

後で使用するために、Matlabで関数ハンドルの勾配を計算しようとしています。関数ハンドルの勾配

例えば:

fun = @(x) x(1)^2+ 2*x(2) 

grad_fun = @(x) gradient(fun(x)) 

私はこれをチェックした場合:私はすべての値について0

を受けるgrad_fun([1;1])、私が得るすべてはゼロです。

誰かが私を助けることができますか?

ありがとうございます!

+0

grad_fun([1; 10])の結果は何ですか? – Alexander

+0

結果は次のようになります。ans = 0 – Sheosha

+1

grad_fun([1; 10])を計算したい場合、最初はfunに、そしてfun = @(x)x(1)^ 2 + 2x(2) (2)= 1^2 + 2 * 2、fun = 5、勾配(5)またはfun(任意のスカラー番号)は0(ゼロ) –

答えて

0

funインライン関数はスカラー値を返します。つまり、定数の勾配を取得しようとしました。 gradient関数の単一の引数は、行列または行ベクトルでなければなりません。詳細はMathWorks Documentationを参照してください。