トップページ -> 実践知識 -> Octave を用いた画像処理,信号処理 -> Windows に Octave バージョン 3.2.4 と octave-forge をインストール(Windows 上の Cygwin にインストール)
[サイトマップへ], [サイト内検索へ],

Windows に Octave バージョン 3.2.4 と octave-forge をインストール(Windows 上の Cygwin にインストール)

サイト構成 連絡先,業績 実践知識 コンピュータ 教材 サポートページ

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

この Web ページでは,Octave バージョン 3 の Windows 版(Cygwin パッケージ)をインストール,テスト実行する手順を図解で説明する.2010/07 時点での Cygwin パッケージの Octave のバージョンは 3.2.4 です.

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

<要点>

Cygwin のパッケージからインストールしますので,

という場合に役立つでしょう.

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

【本 Web サイト内の関連 Web ページへのリンク】

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


前準備

前もってインストールしておくべきソフトウエア

  1. Cygwin の Web ページの記述に従って,Cygwin のセットアッププログラム setup.exe を入手しておくこと.

前もって調べておく事項


インストール手順

Cygwinのセットアッププログラム setup.exe を使って,Octave をインストールする.簡単にインストールできます.

※ ついでに,gnuplot もインストールする.

  1. セットアッププログラムの開始

  2. パッケージ選択画面 (Select Packages)」(下図)まで進む

  3. パッケージ選択画面で,パッケージを選ぶ

    下記のパッケージを選ぶ.

    「keep」になっている場合には,インストール済みなので,keep のままでよい.

  4. 終了の確認

(参考)ファイルの配置

Cygin の octave のパッケージを使ってインストールしたときのファイルの配置は次のようになる. 「パッケージを自前で追加したい」などのとき必要になる情報です.


動作確認

試しに使ってみます.

  1. Cygwin のコンソールを起動

  2. octave の起動

    Cygwin のコンソール で次の操作を行う.

    octave
    

  3. 試しに使ってみる

    Cygwin のコンソール で次の操作を行う.

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

  4. パッケージの確認
    pkg list
    

  5. octave の終了
    exit
    

gnuplot との連携の例

Octave では,gnuplot の機能を呼び出してグラフを作る,というのが定番なので,試してみます.

グラフの描画のために,Cygwin のコンソール で次の操作を行う.

※ startx を忘れるとエラーメッセージが出ます.(gnuplot が動かないので).

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


(オプション)cygblas-0.dll の入れ替え

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

  1. GotoBLAS2 の入手とビルド

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

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

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

    cp /usr/bin/cygblas-0.dll /usr/bin/cygblas-0.dll.DIST
    cp /usr/lib/libgoto2.dll usr/bin/cygblas-0.dll
    



性能測定の例

参考 Web ページ http://www.ccn.yamanashi.ac.jp/~stomo/center_report/Octave.html

本来,性能値は,マシンの種類.ソフトウエアのバージョン,コンパイル時のオプションなどで大きく変わる値です. ここで示す性能値は,他のプロセスをとめるなどしていません. あくまでも「参考値」ということでご理解ください.ここの性能値を鵜呑みにしないで下さい.

cygblas-0.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)

cygblas-0.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)