ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

構文

FX = gradient(F)
[FX,FY] = gradient(F)
[FX,FY,FZ,...] = gradient(F)
[...] = gradient(F,h)
[...] = gradient(F,h1,h2,...)

定義

2 変数の関数 F(x,y) の "勾配" は、次のように定義されます。

F=Fxi^+Fyj^

これは、F の値が増加する方向を示すベクトルの集合として考えることができます。MATLAB® ソフトウェアでは、任意の数の変数をもつ関数に対して数値勾配 (差分) を計算できます。N 変数の関数 F(x,y,z, ...) の場合、次のようになります。

F=Fxi^+Fyj^+Fzk^+...

説明

FX = gradient(F) は、F がベクトルの場合、F の 1 次元数値勾配を返します。FX は x (水平) 方向の差分 ∂F/∂x に対応します。

[FX,FY] = gradient(F) は、F が行列の場合、2 次元数値勾配の y 成分と x 成分を返します。FX は x (水平) 方向の差分 ∂F/∂x に対応します。FY は y (垂直) 方向の差分 ∂F/∂y に対応します。各方向の点の間隔を 1 と仮定します。

[FX,FY,FZ,...] = gradient(F) は、FN 次元をもつ場合、F の勾配の N 成分を返します。F 内の値の間隔を制御するには、2 つの方法があります。

  • 単一の間隔値 h ですべての方向の点間隔を指定します。

  • N 個の間隔値 (h1,h2,...) で F の各次元に対する間隔を指定します。スカラーの間隔パラメーターは、各次元に対する一定間隔を指定します。ベクトル パラメーターは、F の対応する次元に沿った値の座標を指定します。この場合、ベクトルの長さは、対応する次元のサイズに一致しなければなりません。

    メモ:   最初の出力 FX は常に、F の 2 番目の次元に沿った勾配であり、列を横切ります。2 番目の出力 FY は常に、F の最初の次元に沿った勾配であり、行を横切ります。3 番目の出力 FZ およびそれ以降の出力においては、N 番目の出力は F の N 番目の次元に沿った勾配になります。

[...] = gradient(F,h) は、h がスカラーの場合、各方向での点間隔として h を使用します。

[...] = gradient(F,h1,h2,...) は、N 個の間隔パラメーターを使い F の各次元に対する間隔を指定します。

ベクトル場の等高線図

グリッドで $x e^{-x^2-y^2}$ の 2 次元勾配を計算します。

v = -2:0.2:2;
[x,y] = meshgrid(v);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.2);

同じ Figure に等高線とベクトルをプロットします。

contour(v,v,z)
hold on
quiver(v,v,px,py)
hold off

ポイントの次元間隔の指定

3 次元配列を作成します。

F(:,:,1) = magic(3); 
F(:,:,2) = pascal(3);

コマンド

gradient(F)

は、dx = dy = dz = 1 を取ります。しかし、コマンド

[PX,PY,PZ] = gradient(F,0.2,0.1,0.2) 

は、dx = 0.2dy = 0.1、および dz = 0.2 を取ります。

詳細

すべて折りたたむ

アルゴリズム

gradient はデータ点間の中央差分を計算します。各行に N 値を含む配列、行列またはベクトルの場合、i 番目の値は以下の式で定義されます。

Bi=12i=2N1(Ai+1Ai1).

i=1i=N の両端点の勾配は、端点の値と行内の次の隣接値の間の片側差分で計算されます。複数の出力を指定した場合、gradient は他の次元に沿った中央差分も計算します。関数 diff とは異なり、gradient 入力と同じ数の要素を含む配列を返します。

参考

|

この情報は役に立ちましたか?