トップページ -> 研究道具箱と教材 -> Octave を用いた信号処理,画像処理 -> Windows に Octave バージョン 3.6.1 をインストール
[サイトマップへ]  

Windows に Octave バージョン 3.6.1 をインストール

Octave とは, MATLAB 互換の数値解析ソフトウエアです.

この Web ページでは, Octave バージョン 3.6.1 の Windows 版をインストール,テスト実行する手順を図解で説明します.

■ この Web ページで説明してること

貴重な情報源: http://www40.atwiki.jp/gnuoctavejp (Octave for Windows メモの著者様による Wiki)

参考Webページ:http://wiki.octave.org/wiki.pl?OctaveForWindows

Octave のオンラインマニュアル


インストール手順

  1. Octave-Forge プロジェクトの Web ページを開く

    http://octave.sourceforge.net/

  2. Windows installer」をクリック

  3. 最新の MinGW 版を選ぶことにする

  4. 2つのファイルをダウンロードする

  5. インストール用のディレクトリを新しく作る

    これ以降の説明では,インストールディレクトリは「C:\Octave」であるとして説明を続ける.

    インストールディレクトリは何でも良いが,ディレクトリ名に空白文字を含まないこと.日本語を使うことは推奨しない. 「C:\Octave」以外にする場合には,あとで,ショートカットの調整を行う必要がある.

  6. ダウンロードした Octave3.6.4_gcc4.6.2_20130408.7z を,インストールディレクトリに解凍.

    ※ 解凍用のソフトウエアは, http://www.7-zip.org/ などから簡単に入手できる.

  7. 解凍するとファイルができるので確認しておく

  8. ショートカット octave3.6.1_gcc4.6.2octave3.6.1_gcc4.6.2_docs をわかり易い場所(デスクトップなど)にコピー

  9. 試しに起動してみる

    起動すると Octave のウインドウが現れる

    起動チェックできたので「exit」で終了する

  10. 環境変数 PATH の設定

    環境変数 PATH に 「;C:\Octave\Octave3.6.4_gcc4.6.2\bin」 を加える.

  11. 今度は,ダウンロードした Octave3.6.4_gcc4.6.2_pkgs_201304.7z を,インストールディレクトリに解凍.

  12. 解凍するとファイルができるので確認しておく

  13. パッケージの再構築

    http://sourceforge.net/projects/octave/files/Octave%20Windows%20binaries/Octave%203.6.4%20for%20Windows%20MinGW%20installer/ の記述に従い, 次のコマンドを実行

    pkg rebuild -auto
    pkg rebuild -noauto ad 
    pkg rebuild -noauto nan
    pkg rebuild -noauto gsl
    pkg rebuild -auto java
    

動作確認

試しに使ってみます.

  1. octave の起動

    起動すると,次のような画面が現れる.

  2. 試しに使ってみる

    Octave で,次の操作を行う.

    
    x = [ 1, 2, 3 ]
    y = [ 4, 5, 6 ]
    x + y
    x * y'
    

  3. パッケージの確認

    
    pkg list
    

  4. octave の終了

    
    exit
    

gnuplot との連携の例

Octave では,gnuplot や JHandle (グラフィックスバックエンド)の機能を呼び出してグラフを作る,というのが定番なので,試してみます.

Octave で次の操作を行います.


x = [0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2]
plot( x, sin(x) )

Octave バージョン 3.2.4 で「warning: isstr is obsolete and will be removed from a future version of Octave, please use ischar instead」というエラーメッセージが出て,結局 plot での描画がうまくできないことがあります.

Octave for windows メモ」の Web ページに参考情報があります. プロットの前に,次の操作を行うことで,このエラーを回避できることがあります.


pkg unload oct2mat


(オプション)blas.dll の入れ替え

blas.dll を入れ替えることで高速化が期待できます。実測値は、この Web ページの下に示しているので参考にしてください.

以下,Octave 3.2.4での手順を示しておきます.

  1. GotoBLAS2 の入手とビルド

    Windows で GotoBLAS2 バージョン 1.13 と CBLAS をビルドとインストール」の手順に従ってください.

  2. GotoBLAS2 の libgoto2.dll を blas.dll と入れ替え

    Cygwin のコンソールで以下の操作を行う。

    cd /tmp/GotoBLAS2/exports
    cp libgoto2.dll /cygdrive/c/Octave/3.2.4_gcc-4.4.0/bin/bin/blas.dll
    

  3. Windows で環境変数の設定

    環境変数 PATH に「C:\cygwin\bin」を設定する.

    ※ すでに,PATH に何かを設定済みの場合には,「;C:\cygwin\bin」を書き加える(先頭はセミコロン「;」).

※ Octave の起動時にエラーが出る(「cyggcc_s-1.dll が無いよ!」など)場合には,環境変数 PATH の設定を確認する.


性能測定の例

blas.dll の入れ替え前と入れ替え後の性能測定の例を示します。

実測値の概要

【お断り】プログラムのテストを行っていない.他のプロセスを止めるなどしていない(従って,比較ではなく,傾向を見るための参考値だと思ってください).※ 単位は秒で,3桁目を四捨五入.

      blas.dll の入れ替え前 blas.dll の入れ替え後
(a) 行列と行列の積 X = rand(2000,2000); Y = rand(2000,2000); Z = X * Y 2.4 0.70
(b) LU 分解 (LU decomposition) X = rand(2000,2000); [L, U, P] = lu(X) 0.96 0.97
(c) 正方行列の逆行列 X = rand(2000,2000); [Z, RCOND] = inv(X) 2.7 3.0
(d) 行列式 (determinant) X = rand(2000,2000); [D, RCOND] = det(X) 0.92 1.16
(e) Singular Value Decomposition (SVD), X = U*S*V X = rand(2000,2000); [U, S, V] = svd(X) 91 85
(f) QR factorization X = rand(2000,2000); [Q, R, P] = qr(X) 5.3 2.9
(g) 分散共分散行列 X = rand(2000,2000), Y = rand(2000,2000); Z = cov(X, Y) 2.4 0.78
(h) 分散共分散行列の固有値と固有ベクトル(主成分分析) X = rand(2000,2000); [v, L] = eig( cov(X) ) 21 16.4
(i) princpmp 関数による主成分分析 X = rand(2000,2000); [pc, z, w, Tsq] = princomp(X) 84 76
(j) 2次元の畳み込み(コンボリューション) X = rand(2000,2000); B = rand(21); Z = conv2(X, B, 'full') 5.6 5.6
(k) 2次元の高速フーリエ変換 (FFT) X = rand(2000,2000); Z = fft2(X, 2000, 2000) 0.136 0.136
(l) convex hull x = rand(1000000,1); y = rand(1000000,1); H = convhull(x, y) 0.72 0.90

blas.dll の入れ替え前

【実測値の例】Intel Corei7 860 (2.8GHz), Octave バージョン 3.2.4


(a) 行列と行列の積: X = rand(2000,2000); Y = rand(2000,2000); Z = X * Y


(b) LU 分解 (LU decomposition): X = rand(2000,2000); [L, U, P] = lu(X)


(c) 正方行列の逆行列: X = rand(2000,2000); [Z, RCOND] = inv(X)


(d) 行列式 (determinant): X = rand(2000,2000); [D, RCOND] = det(X)


(e) Singular Value Decomposition (SVD), X = U*S*V: X = rand(2000,2000); [U, S, V] = svd(X)


(f) QR factorization (QR decomposition ともいう): X = rand(2000,2000); [Q, R, P] = qr(X)


(g) 分散共分散行列: X = rand(2000,2000), Y = rand(2000,2000); Z = cov(X, Y)


(h) 分散共分散行列の固有値と固有ベクトル(主成分分析): X = rand(2000,2000); [v, L] = eig( cov(X) )


(i) princpmp 関数による主成分分析: X = rand(2000,2000); [pc, z, w, Tsq] = princomp(X)


(j) 2次元の畳み込み(コンボリューション): X = rand(2000,2000); B = rand(21); Z = conv2(X, B, 'full')


(k) 2次元の高速フーリエ変換 (FFT): X = rand(2000,2000); Z = fft2(X, 2000, 2000)


(l) convex hull: x = rand(1000000,1); y = rand(1000000,1); H = convhull(x, y)

blas.dll の入れ替え後

【実測値の例】Intel Corei7 860 (2.8GHz), Octave バージョン 3.2.4


(a) 行列と行列の積: X = rand(2000,2000); Y = rand(2000,2000); Z = X * Y


(b) LU 分解 (LU decomposition): X = rand(2000,2000); [L, U, P] = lu(X)


(c) 正方行列の逆行列: X = rand(2000,2000); [Z, RCOND] = inv(X)


(d) 行列式 (determinant): X = rand(2000,2000); [D, RCOND] = det(X)


(e) Singular Value Decomposition (SVD), X = U*S*V: X = rand(2000,2000); [U, S, V] = svd(X)


(f) QR factorization (QR decomposition ともいう): X = rand(2000,2000); [Q, R, P] = qr(X)


(g) 分散共分散行列: X = rand(2000,2000), Y = rand(2000,2000); Z = cov(X, Y)


(h) 分散共分散行列の固有値と固有ベクトル(主成分分析): X = rand(2000,2000); [v, L] = eig( cov(X) )


(i) princpmp 関数による主成分分析: X = rand(2000,2000); [pc, z, w, Tsq] = princomp(X)


(j) 2次元の畳み込み(コンボリューション): X = rand(2000,2000); B = rand(21); Z = conv2(X, B, 'full')


(k) 2次元の高速フーリエ変換 (FFT): X = rand(2000,2000); Z = fft2(X, 2000, 2000)


(l) convex hull: x = rand(1000000,1); y = rand(1000000,1); H = convhull(x, y)