2.0.x から 2.1.x へ

[Octave]

はじめに

Octave Downloadペー ジによると、安定バージョンである、2.0.x系は既にメンテナンスされておら ず、実際 2002年4月の 2.0.17 から新たなリリースもない。一方、試用バージョ ンである、2.1.x系は、次々と新しいバージョンがリリースされている。試用 バージョンは、安定バージョンに比べて、セル配列、多次元配列のサポートな ど、新機能が豊富である。また、Matlab互換を標榜する Octave-forge パッケー ジも、試用バージョンを対象に開発されており、安定バージョンでは動かない ものもある。

では、2.0.x系を使っていたユーザが、そのまんま 2.1.x系に移れるかとい うと、文法や関数の使用が変わっている部分もあり、そうはいかない。

ここでは、octave-2.0.17 を使用している環境から、最新試用バージョン (2005年11月で2.1.71)に移行する際に重要な点をまとめていく。

2.0.x系と 2.1.x系との違い

更新中!!

2.0.x2.1.x備考
global変数
> global b;
> exist('b')
ans = 0
> global b;
> exist('b')
ans = 1
2.1.xでは、宣言した時点で global変数は存在するので、 global変数に値が代入済みかどうかは、isempty を使って調べる必要がる。
セル配列 サポートしない OK セル配列はMATLAB互換?
conv 一方のデータが充分長いときには fftconv より数倍高速 2.0.17 の convに比べて9倍以上遅い 2.1.64以降は filter.cc が改善されて差は約2倍に縮まった
可変引数 ... varargin varargin{idx} idx は可変引数の何番目であるかを示すインデックス
可変引数参照開始 va_start() 廃止 va_start() 無しで可変引数の参照が可能になった
可変引数参照 va_arg() varargin{idx} idx は何番目の可変引数であるかを示すインデックス
コマンドライン引数 argv(idx,:) argv{idx} idx は何番目のコマンドライン引数であるかを示すインデックス
str2num 文字列を数値に変換 文字列(配列)を数値(配列)に変換 2.1.x の str2num は、そのまま 2.0.x でも使用でき、文字列配列の 数値配列への変換も可能
num2str スカラ数値を文字列に変換 数値(配列)を文字列(配列)に変換
gnuplot(グラフ)の設定 gset __gnuplot_set__ とりあえず gset を使うこともできるが、将来的に gset は廃止される 見込み
gset の設定項目 gset autoscale axis('auto') プロット範囲の設定には axis を使う

MATLAB と Octave-forge の関数仕様の違い

更新中!! ここで比較対象のMATLABは ver.6.0 (R12) とした。

MATLABOctave-forge備考
fir1, fir2 cols行列 rows行列
conv, fftconv conv : cols行列 fftconv : rows行列 2.1.x系では、fftconvの方が、双方のデータ長が長いとき、convより格 段に速い。MATLABの conv の場合、片方のデータが短い時高速だが、両方と も長いとかなり遅い。
wavread x = wavread('hoge.wav', 'size');
にて、WAVファイルのサイズを返す
左記をサポートしない 自作 wavread.m を利用
akira@rsch.tuis.ac.jp