liboctave

最近の octave / liboctave インストール

ここ最近の octave / liboctave のインストール方法についてメモ.(Debian / Ubuntu) (追記@Feb.06,2010)共有ライブラリの指定について.

可変引数リストを使った任意長のベクトル初期化

C/C++ の可変引数リスト (variable argument list) をあまり使ったことがなかったので,練習も兼ねて,初期値付きで任意長のベクトルとかリストを生成できる関数を作る.例えば list<double> x= container_gen<list<double> >(5, -5.0,10.0,3.0,1.0,2.0) のような感じで,サイズ5</list<double></double>…

liboctave のエラーハンドラを自分で定義して,デバッグを効率化

liboctave を使っていると,例えば要素数の異なる列ベクトルを足そうとしたときに fatal: operator +: nonconformant arguments (op1 len: 2, op2 len: 5) というエラーが発生し,プログラムが正常終了する.正常終了とは exit(1) による終了で, コアファイ…

コンパイルするファイル間の依存性はできるだけ減らそう 〜liboctaveへん〜

liboctave 利用時のコンパイルを「遅い」と感じたことはないだろうか.ここでは liboctave におけるヘッダファイルの依存関係を把握することにより,コンパイルを高速化する方法を検討する.

std::vector, liboctave の ColumnVector, 配列に共通の関数

STL (標準テンプレートライブラリ) の std::vector とか liboctave の ColumnVector,あるいは普通の配列に対して共通に使えるテンプレート関数の作り方を説明する.

liboctaveで主成分分析 -特異値分解を使う-

C++ と liboctave でPCAをするプログラム.データの共分散行列を求めて,これを特異値分解するというやりかた.一般的に,固有値分解のよりも精度がいいらしい (Principal components analysis, Wikipedia, The Free Encyclopedia).

liboctaveで主成分分析 -固有値分解を使う-

C++ と liboctave でPCAをするプログラム.データの共分散行列を求めて,その行列を固有値分解するという,テキストに載っているやりかた.

liboctaveで主成分分析 -サンプルデータ生成-

PCA (主成分分析) にかけるデータの生成プログラム. sample.dat に出力データを保存してあるので,これを使えばPCAのプログラムが実行できます(よって以下は興味がある人だけ).

liboctave + C++で可能なことを増やすために

octave は Matlab には劣るかもしれないが,かなり多くのことができる.それらのうち, liboctave で実装されているものはもちろん C++ から利用できるのだが,そうでないもの,例えばスクリプトやDLDなどによって提供されているものについても, C++ から利…

LU分解

LU分解 (LU decomposition) の用途: 連立方程式を解くなど.正方行列でなくともよい.

コレスキー分解

コレスキー分解 (Cholesky decomposition) の用途: サンプルデータの前処理, Ax = b の数値解,モンテカルロ法,カルマンフィルタなど(一部 Cholesky decomposition - Wikipedia, the free encyclopedia より). 正定値エルミート行列 (実数値行列なら…

特異値分解

特異値分解 (Singular value decomposition, SVD) の用途: 主成分分析,疑似逆行列の計算,機械学習,パタン認識,数値解析など.任意の形の行列を分解できる.

固有値分解

固有値分解 (Eigendecomposition) の用途: 主成分分析など多数. 正方行列 に対してのみ適用可能(非正方の場合は特異値分解).

行列式

行列式 (determinant) の計算は,例えば多次元のガウス関数を扱うときなどに必要だ.

逆行列,疑似逆行列

行列 (Matrix/ComplexMatrix) A が正則の場合には A.inverse() で逆行列が求められる.非正則の場合には A.pseudo_inverse() で疑似逆行列(ムーア・ペンローズ型の一般逆行列)が求められる.

liboctave の基礎:コンパイルと型と基本演算

liboctave には「行列型 Matrix」や「列ベクトル型 ColumnVector」がクラスとして実装されていて, これらの間の足し算や割算が operator として定義されている . だから,行列の複雑な演算がとてもシンプルに書くことができるのは,容易に想像がつくだろう…

liboctave で数値計算(リンクとインストール)

C++ で行列演算がメインの数値計算をしたいとき(ロボティクスとか機械学習の分野などで),いちいち自分で逆行列とかの基本的な演算を自分で実装してたら埓があかない.何かライブラリを利用したい.ここでは Matlab と互換性が(それなりに)ある octave を …