しぐまっく

愛機MacBook Pro(Mid 2010)を研究やら趣味やらに使っている際のおぼえがき.homebrewとかlinuxとかwebサービスとかも.

Octave事始め(プロット,ファイル,フィッティング)

HomebrewでインストールしたOctaveの使用例を3つほど.

プロット

記法
plot(x,y)
plot(x,y,fmt)
plot(x1,y1,fmt1,x2,…)

xyプロット.x,yはそれぞれ配列(行ベクトル).
fmt にプロット方法のオプションが指定できる.

'-' ライン(デフォルト)
'@' 打点(記号)
'-@' ラインと打点
'n' 色の指定(n=1~9)
'+' '*' 'o' 'x' それぞれの記号で打点
';str;' strを凡例タイトルに表示する
x = [0:0.1:pi];
plot(x,sin(x))
Macでのgnuplotターミナル変更について

octaveターミナルで

setenv("GNUTERM","x11")

と入力するとgnuplotx11(xquartz)で描画される.AquaTermなら"aqua".

ファイル

関数ファイル

ファイル名は 関数名.m .コメント以外の書き出しが function 戻り値 = 関数名(引数) .octaveが読んでくるディレクトリもしくはカレントディレクトリに関数ファイルがあれば,関数を指定するだけで自動的に読み込んでくれる(らしい).

スクリプトファイル

拡張子が .m であれば任意.書き出しが function
以外であることに注意.ファイル名(.m省く)を指定すると自動的に初めの行から実行される.なお,ターミナルで

octave -qf ファイル名(.m付き)

でも実行できる.(qfオプションにより,起動時の表示を消せる.)

変数ファイル

ファイル名は任意.load ファイル名 で読み出し,拡張子を除いたファイル名が変数となる.

> test.txt
0 1.5
1 5.2
2 8.1
3 4.8
5 6.4
> octave
load test.txt

変数ファイルの書き出しに,コメントで

# name: test
# type: matrix
# rows: 10
# columns: 2

などと記載すると,その変数で読まれる.(octave上で save ファイル名 変数名 で変数ファイルを保存した場合のフォーマット)
文字列変数に入っているファイル名を使って読み書きする場合,

> load (filename)

とすると読み出せる.(平文で書くと filename という名前のファイルを読もうとしてしまう.)

フィッティング

octaveの optim パッケージ内の leasqr 関数を使用.

パッケージインストール方法

octave上で

> pkg install -forge パッケージファイル名

でインストール可能.ローカルに保存してあれば -forge オプション無しでOK.
パッケージ一覧は こちら
なお,依存関係があるので,optim の場合 miscellaneous(要general) と struct が必要.

トラブルシューティング

miscellaneousインストール時にエラーが発生.

> mkoctfile -p CC
clang

の場合になることがあるらしい.一度octaveから出て,ターミナルで

$ export CC=llvm-gcc-4.2
$ export CXX=llvm-g++-4.2

としてからoctaveの追加パッケージインストール
をすると成功した.

パッケージ利用方法

パッケージ内の関数を使用する場合,

> pkg load optim

としないといけない.

備考

最小二乗フィッティングなら gnuplotの方が楽かも…
http://activecontour.blog63.fc2.com/blog-entry-14.html