Home › Monthly Archives › 7月 2013

(13) octaveではclassdefは使えない

なんやら

(12) GUI実装版Octaveがリリースされる?

MATLABのGUIはリッチで使いやすいけれど、基本セット+αだけで大衆車の新車が買えちゃうほど高額なので個人所有が困難…

GNU OctaveのGUI実装が進められているようなので、こちらに期待しています!
http://wiki.octave.org/FAQ#GUI

(11) DomainMathIDEでGUIなOctave

DomainMathIDEのプロジェクトHPはこちらです。
https://sites.google.com/site/domainmathide/

プログラム一式をダウンロードし、任意のディレクトリに置きます。

プログラム実行!

$ java -jre DomainMathIDE.jar

GUIは起動するが、なんかプログラムがうまく動かん…

(10) 「.m」ファイルにスクリプトを書いてみる

なんやら

(9) ones()で全要素の値が1の配列を作る

ones()は、任意の次数、要素数で、全要素の値が1の配列を作ることができる。

octave:1> ones(1)
ans =  1

octave:2> ones(2)
ans =
   1   1
   1   1

octave:3> ones(3)
ans =
   1   1   1
   1   1   1
   1   1   1

octave:4> ones(1,2)
ans =
   1   1

octave:5> ones(2,1)
ans =
   1
   1

octave:6> ones(2,3)
ans =
   1   1   1
   1   1   1

octave:7> ones(2,3,4)
ans =

ans(:,:,1) =
   1   1   1
   1   1   1

ans(:,:,2) =
   1   1   1
   1   1   1

ans(:,:,3) =
   1   1   1
   1   1   1

ans(:,:,4) =
   1   1   1
   1   1   1

octave:8> ones(1,3)*2
ans =
   2   2   2

octave:9> ones(4,2)*3
ans =
   3   3
   3   3
   3   3
   3   3

octave:10>

(8) zeros()で全要素の値が0の配列を作る

zeros()は、任意の次数、要素数で、全要素の値が0の配列を作ることができる。

octave:6> zeros(1)
ans = 0

octave:7> zeros(2)
ans =
   0   0
   0   0

octave:8> zeros(3)
ans =
   0   0   0
   0   0   0
   0   0   0

octave:9> zeros(1,1)
ans = 0

octave:10> zeros(1,2)
ans =
   0   0

octave:11> zeros(2,1)
ans =
   0
   0

octave:12> zeros(2,2)
ans =
   0   0
   0   0

octave:13> zeros(2,3)
ans =
   0   0   0
   0   0   0

octave:14> zeros(2,3,4)
ans =

ans(:,:,1) =
   0   0   0
   0   0   0

ans(:,:,2) =
   0   0   0
   0   0   0

ans(:,:,3) =
   0   0   0
   0   0   0

ans(:,:,4) =
   0   0   0
   0   0   0

octave:15>

(7) numel()で配列の要素数を見る

numel( A ) は、指定した変数Aの全要素数を返す。

octave:1> a=[1 2 3;4 5 6;7 8 9]
a =
   1   2   3
   4   5   6
   7   8   9

octave:2> numel(a)
ans =  9

octave:3> b=repmat(a,[2 1])
b =
   1   2   3
   4   5   6
   7   8   9
   1   2   3
   4   5   6
   7   8   9

octave:4> numel(b)
ans =  18

octave:5> c=repmat(a,[2 3])
c =
   1   2   3   1   2   3   1   2   3
   4   5   6   4   5   6   4   5   6
   7   8   9   7   8   9   7   8   9
   1   2   3   1   2   3   1   2   3
   4   5   6   4   5   6   4   5   6
   7   8   9   7   8   9   7   8   9

octave:6> numel(c)
ans =  54

octave:17>

(6) size()で配列の要素数を見る

size( A ) は、配列Aの各次元の要素数を見ることができる。

octave:5> a=[1 2 3;4 5 6]
a =
   1   2   3
   4   5   6
octave:6> size(a)
ans =
   2   3

size( A, B ) は、配列Aの第B次元の要素数を見ることができる。

octave:7> size(a,1)
ans =  2
octave:8> size(a,2)
ans =  3

サイズ情報を表示させるのではなく、直接変数に入れることもできる。

octave:9> b = size(a)
b =
   2   3
octave:10> [b,c] = size(a)
b =  2
c =  3

(5) 演算子「*」と「.*」は何が違う?

行列aと行列bについて a * b と記述すると行列の積として計算される。

octave:1> a=ones(3,3)
a =
   1   1   1
   1   1   1
   1   1   1

octave:2> b=[1 2;3 4;5 6]
b =
   1   2
   3   4
   5   6

octave:3> a * b
ans =
    9   12
    9   12
    9   12

octave:4>

次に a .* b と記述すると、各要素同士の積として計算される。

octave:5> a=ones(3,3)*2
a =
   2   2   2
   2   2   2
   2   2   2

octave:6> b=[1 2 3;4 5 6;7 8 9]
b =
   1   2   3
   4   5   6
   7   8   9

octave:7> a.*b
ans =
    2    4    6
    8   10   12
   14   16   18

octave:8>

「.*」は、配列aと配列bの少なくとも一つの次元の要素数が同じであれば計算できる。(warningが出るけれども…)

octave:18> a=ones(3,3)
a =
   1   1   1
   1   1   1
   1   1   1

octave:19> b=[2 3 4]
b =
   2   3   4

octave:20> a.*b
warning: product: automatic broadcasting operation applied
ans =
   2   3   4
   2   3   4
   2   3   4

octave:21> b=[2;3;4]
b =
   2
   3
   4

octave:22> a.*b
warning: product: automatic broadcasting operation applied
ans =
   2   2   2
   3   3   3
   4   4   4

octave:23>

(4) パッケージのインストール方法

octaveには、とても便利なスクリプトがいろいろと用意されています。これらの便利スクリプトは、パッケージとして機能ごとにまとめられており、好きなものをダウンロード&インポートして使います。

パッケージを活用すると 「やりたいことを短時間でできる」 が実現できます。

(1) パッケージはこちらの Octave-Forge のサイトからダウンロードできます。
http://octave.sourceforge.net/packages.php

(2) パッケージのインストール方法はこちらに書かれています。
http://www.gnu.org/software/octave/doc/interpreter/Installing-and-Removing-Packages.html

インストール先のマシンがインターネットに接続している場合、Octave-Forge から直接インストールできます。

octave> pkg install -forge xxxxx

xxxxx は actuarial や image など、上記(1)に記述されているパッケージ名に置き換えます。

パッケージ内に実装された関数を使用したい場合、pkg load でパッケージをロードする必要があります。

octave> pkg load xxxxx

インストール済みのパッケージをすべてロードしたい場合、all を指定します。

octave> pkg load all