金子邦彦研究室プログラミングOctave の活用Octave で二次元のベクトルマップ (vector map) を扱う例

Octave で二次元のベクトルマップ (vector map) を扱う例

Octave で二次元のベクトルマップ (vector map) を扱う例を,プログラムと図解で説明する.

二次元ベクトルマップの矢印での表示

二次元ベクトルマップを表示するプログラム. 関数 draw_2D_vector_map は, x軸とy軸方向のベクトル2つと見た目を変更する引数を持つ.

ソースコード

%2次元ベクトルをある間隔で表示するプログラム
%span:ベクトルの表示間隔
%U:x軸方向のベクトル成分
%V:y軸方向のベクトル成分
%vector_length:表示したいベクトルの最大長
function draw_2D_vector_map(span,U,V,vector_length)
[width,height]=size(U');
[Xspan,Yspan]=meshgrid(1:span:width,1:span:height);
Uspan=U(1:span:height,1:span:width);
Vspan=V(1:span:height,1:span:width);
MAX_LENGTH=max(max(sqrt(power(U,2)+power(V,2))));
%最後を2で割るのはquiverの仕様(バグ?)
quiver(Xspan,Yspan,Uspan,Vspan,vector_length/MAX_LENGTH/2);
endfunction


# テストデータ生成
width=360;
height=200;
U=repmat(cosd(1:width),height,1);
V=repmat(sind(1:width),height,1);
draw_2D_vector_map(10,U,V,10);

x軸の値を角度として持つベクトル場の例
10ピクセル間隔で長さの最大を10としたときの表示

実行手順

上記の Octave プログラム・ソースコードを hoge.m のようなファイル名で保存した後,octave を起動し

source hoge.m

実行結果の例

[image]