Octave を Windows にインストールして使う(公式インストーラ使用)
【概要】
Octave は,MATLAB とほぼ互換の数値解析ソフトウェアである。この資料では,Windows に Octave の最新安定版(バージョン 11.3.0)を公式インストーラでインストールし,代表的な数値計算(主成分分析など)を試す手順を説明する。
公式インストーラを使うので導入は容易である。最適化済みの数値計算ライブラリ(BLAS・LAPACK)と主要な拡張パッケージが同梱されており,インストール後すぐに高速な行列演算を利用できる。
【目次】
【関連する外部ページ】
- Octave 公式サイト: https://octave.org/
- Octave 公式マニュアル: https://docs.octave.org/latest/
【サイト内の関連情報】
前準備
- 使用中の Windows が 64 ビット版であること。現在の Octave は 64 ビット版のみが公式に提供されている(32 ビット版はすでに提供終了)。
インストール手順
- ウェブページを開く
- 「Microsoft Windows」の項目にある,最新の 64 ビット版インストーラ(octave-11.3.0-w64-installer.exe)を選ぶ
- ダウンロードが始まる
- ダウンロードした .exe ファイルを実行
- ようこそ画面では「Next」をクリック
- ライセンス条項の確認。同意できる場合のみ「Next」をクリックする。
- インストールオプションは,既定(デフォルト)のままでよい。「Next」をクリック。
- 次のインストールオプションも,既定(デフォルト)のままでよい。「Next」をクリック。
- インストールディレクトリ(フォルダ)は,既定(デフォルト)のままでよい。「Install」をクリック。
- インストールが始まる。
- インストール完了の確認。「Finish」をクリック。
動作確認
- スタートメニューから Octave を起動する。
- ベクトル演算を試す。Octave のコマンドウィンドウで次を入力する。
x = [1 2 3] y = [4 5 6] x + y x * y' - 同梱パッケージの確認
pkg list - Octave の終了
exit
拡張パッケージの利用
公式 Windows インストーラには,よく使う拡張パッケージがあらかじめ同梱されている(多くの場合,別途インストールする必要はない)。同梱済みのパッケージは pkg list で確認できる。
一覧にないパッケージを追加したいときは,インターネットに接続した状態で,次の形式でインストールする。
pkg install -forge statistics
インストールしたパッケージは,使う前に読み込む必要がある。
pkg load statistics
グラフ描画の例
Octave は,計算結果を図として描画できる。現在の公式インストーラは描画機能を同梱しているので,追加の設定なしにそのまま描画できる。
x = 0:0.2:1.2;
plot(x, sin(x))
代表的な数値計算を試す
Octave では,次のような計算をすぐに試せる。主成分分析に使う princomp 関数は statistics パッケージに含まれるため,あらかじめ読み込んでおく(pkg load statistics)。
- 行列と行列の積: Z = X * Y
- LU 分解: [L, U, P] = lu(X)
- 正方行列の逆行列: [Z, RCOND] = inv(X)
- 行列式: [D, RCOND] = det(X)
- 特異値分解(SVD): [U, S, V] = svd(X)
- QR 分解: [Q, R, P] = qr(X)
- 分散共分散行列: Z = cov(X, Y)
- 分散共分散行列の固有値と固有ベクトル(主成分分析): [v, L] = eig(cov(X))
- princomp 関数による主成分分析: [pc, z, w, Tsq] = princomp(X)
- 2 次元の畳み込み: Z = conv2(X, B, 'full')
- 2 次元の高速フーリエ変換(FFT): Z = fft2(X, 2000, 2000)
- 凸包(convex hull): H = convhull(x, y)
演習
Octave を起動し,次の計算を順に実行して,結果と実行時間を確認しなさい。
pkg load statistics
X = rand(2000,2000);
Y = rand(2000,2000);
tic(); Z = X * Y; toc() % 行列と行列の積
tic(); [L, U, P] = lu(X); toc() % LU 分解
tic(); [Zi, RCOND] = inv(X); toc() % 逆行列
tic(); [U2, S, V] = svd(X); toc() % 特異値分解
tic(); [pc, z, w, Tsq] = princomp(X); toc() % 主成分分析