読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

C++行列演算ライブラリEigenをファイルインクルードだけで簡単に使う方法

c++ Programming

プログラミングのための線形代数

プログラミングのための線形代数

目次

はじめに

EigenはC++の有名な行列演算ライブラリですが、

計算が非常に早かったり、

様々な線形代数演算機能が使えるだけでなく、

非常に簡単に使えるという特徴があります。

Eigenはテンプレートライブラリという

C++のヘッダファイルのみで構成されるライブラリであるため、

自分のソースコード内でインクルードするだけで、

ソフトを使うことができます。

ライブラリのコンパイルやリンク、インストールという作業もいりません。

1つのバイナリ実行ファイルにすべてのアプリケーションをまとめたい場合や、

簡単にソフトをインストールすることができないような環境でも便利ですね。

今回は、通常の使い方であるEigenを

CMakeでコンパイルしてインストールする方法ではなく、

Eigenをインクルードして使用する方法を説明したいと思います。

Eigenをファイルインクルードだけで使う方法

手順は下記の通りです。

1. C++のソフトを作る

Eigenを使うためのソフトを作ります。

どんな方法でも良いですが、

下記の方法を使えば、一瞬でサンプルコードを作れます。

myenigma.hatenablog.com

2. Eigenのソースコードをダウンロードする

下記のEigenのページからソフトをダウンロードしてきます。

Eigen

フロントページのGet itという場所から

最新版のソフトをダウンロードできます。

ダウンロードしたら、zipやtarで圧縮されているので、展開しておきます。

3. Eigenのソースコードを先ほどのC++ソフトの場所にコピーする。

展開したディレクトリの中のEigenというフォルダを、

C++ソフトと同じディレクトリにコピーします。

f:id:meison_amsl:20150529214837p:plain

4. C++ソフトの中で必要なEigenライブラリをインクルードする

Eigenフォルダの中には様々なEigenのヘッダライブラリをインクルードする

インクルードファイルが入っています。

f:id:meison_amsl:20150529215035p:plain

それぞれのインクルードファイルには拡張子が無いですが、

必要なライブラリだけインクルードすれば、

srcの下にある、対応するヘッダライブラリがまとめてインクルードされます。

 

今回は基本的な行列計算だけを想定して、

Coreをインクルードするようにします。

下記のように、相対パスでCoreファイルをインクルードするだけです。

これで、MatrixXfなどが使えるようになります。

#include<iostream>
using namespace std;

#include"Eigen/Core"

int main(){
  cout<<"Hello world"<<endl;

  Eigen::MatrixXf A=Eigen::MatrixXf::Zero(2,2);
  A(0,0)=2;
  A(1,1)=5;

  cout<<A<<endl;

  return 0;
}

5. コンパイルして実行

上記のソフトをコンパイルして実行すると、

f:id:meison_amsl:20150529220256p:plain

となり、Eigenが使えるようになりました。

非常に簡単ですね.

ビバ Eigen !!

参考資料

プログラミングのための線形代数

プログラミングのための線形代数

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com