Octave で関数を利用する

自分で定義した関数を作成し,ファイルに保存して使う方法です


1.関数ファイルを1つづつ作成する方法

(1) 関数を作成し,その関数名に拡張子 .m をつけて ”関数名.m” というファイルを作成する.
(2) このファイルを,Octaveをインストールしたディレクトリの下にある\octave_filesというディレクトリにおけば,関数を使用したとき自動的にロードされる.
(3) もし別のディレクトリに関数ファイルを置きたければ,LOADPATHという組込変数にそのディレクトリを設定する.
・ 具体的には,プログラム内で,LOADPATH=”func”またはLOADPATH=”./func”のようにすると,\octave_filesのディレクトリにある\funcというディレクトリ内の関数ファイルを読んでくれる.
・ ディレクトリが複数ある場合はLOADPATH=”./func1:./func2″またはLOADPATH=”func1:func2″のように:で区切る.
・ どの場合も,デフォルトディレクトリ(\octave_files)下を参照するようにLOADPATH=”func1:func2::”と最後に :: (空のディレクトリを指定)を追加しておく.

max_v.mの例 プログラム説明
# find the maximum value of vector components
# return value: maximum value and the position
function [max_value, index] = max_v (vector)
max_value = vector (1);
for i = 2:length (vector)
if ( vector (i) > max_value )
max_value = vector (i);
index = i;
endif
endfor
endfunction
関数定義
最初のデータをとりあえず最大値とする
2番目から,データ数まで繰り返す
大きいのがあったら
それに入れ替える
データの場所を記録
判定終了
繰り返し終了
関数終わり
main.mの例 (関数ファイルが./func1にあるとする) 実行例
LOADPATH=”./func1::”;
a= [ 1, 9, 3, 7 ];
[max,position]=max_v(a);
max
position
関数ファイルのパスの設定
データの準備
最大値とその位置を求める
最大値出力
最大値の位置出力
>> main
max = 9
position = 2

2.複数の関数を1つのスクリプトファイルに作成する方法

(1) これは,関数ファイルと異なることを知らせるために,スクリプトファイルの最初の1行に,1;などのダミーを入れ,2行目以下に関数を並べて行けばよい.
(2) ただし,スクリプトファイル名は中の関数名のどれかにしないと,探してくれないようだ.

min_v.m

# not a function file:
1;
# find the minimum value of vector components
# return value: minimum value and the position
function [min_value, index] = min_v (vector)
min_value = vector (1);
for i = 2:length (vector)
if ( vector (i) < min_value )
min_value = vector (i);
index = i;
endif
endfor
endfunction
#
# find the maximum value of vector components
# return value: maximum value and the position
function [max_value, index] = max_v (vector)
max_value = vector (1);
for i = 2:length (vector)
if ( vector (i) > max_value )
max_value = vector (i);
index = i;
endif
endfor
endfunction