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

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

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

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

<要点>

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

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

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

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

【関連する外部ページ】

前準備

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

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

前もって調べておく事項

インストール手順

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

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

  1. セットアッププログラムの開始
  2. パッケージ選択画面 (Select Packages)」まで進む
  3. パッケージ選択画面で,パッケージを選ぶ

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

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

    • Math/gnuplot ・・・ グラフ作成ツール.octave の計算結果からのグラフ作成にも使える
    • Math/octave
    • Math/octave-devel
    • Math/octave-doc
    • Math/octave-forge ・・・ 拡張パッケージ
  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
      

    性能測定の例

    関連する外部ページ】 http://www.ccn.yamanashi.ac.jp/~stomo/center_report/Octave.html (現存しない)

    • ハードウェア
      • Intel Corei7 860 (2.8GHz)
    • ソフトウェア
      • OS: Windows 7
      • Octave バージョン 3.2.4, 本ページの手順でインストール

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

    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) )


    (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) )


    (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)