トップページ -> コンピュータ -> Cygwin, MinGW の活用 -> liboctave を用いた 2次元畳み込み(コンボリューション)(Windows 上の Cygwin を使用)
[サイトマップへ], サイト内検索:

liboctave を用いた 2次元畳み込み(コンボリューション)(Windows 上の Cygwin を使用)

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

liboctave とは,Octave の機能(全機能ではないが)が集まった C++ 言語のライブラリファイルとヘッダファイル. 自分で,C++ のプログラムを書き,liboctave の機能を呼び出すことが簡単にできます.

この Web ページでは,liboctave を用いた 2次元畳み込み(コンボリューション)のプログラム例とビルドの手順を説明する.


前準備

  1. Cygwin の Web ページの記述に従って,Cygwin のインストールが済んでいること.

  2. Octave のビルドとインストールに関する Web ページ の記述に従って,Cygwin 上で Octave のビルドとインストールが済んでいること. ビルドの時に使った Octave のソースコードは消さずに残しておくこと.

    この Web ページでは,Octave のソースコードは /tmp/octave-3.0.3 に置いてあるものとして説明を続ける.

(オプション)Eclipse を使う場合

  1. Eclipse のインストールが済んでいること.

  2. 「Eclipse に C/C++ 開発ツール (CDT) をインストール」の Web ページの記述に従って,CDT プラグインのインストールが済んでいること.

  3. 「Octave の機能を呼び出す C++ プログラムの見本と実行手順」の Web ページの記述に従って,プロジェクトの作成と,プロジェクトのプロパティーの設定が済んでいること.

liboctave の機能を呼び出す C++ プログラムの見本と,コマンドラインでのビルドと実行

  1. 前準備
    cd /tmp/octave-3.0.3/src/DLD-FUNCTIONS
    cp *.cc /usr/include/octave-3.0.3/octave
    
  2. ソースコードの見本

    要点

    // liboctave を用いた 2次元畳み込み(コンボリューション) #include <stdio.h> #include <time.h> #include <octave/config.h> #include <octave/Matrix.h> #include <octave/conv2.cc> // 正方行列のサイズを指定 #define DIM 2000 #define DIM2 21 int main( int argc, char **argv ) { printf( "start, \n" ); clock_t c = clock(); MArray2<double> a(DIM, DIM); MArray2<double> b(DIM2, DIM2); MArray<double> r(DIM, DIM); r = conv2(a, b, SHAPE_FULL); printf( "done, elapsed time = %f [sec]", ( (double)clock() - (double)c ) / CLOCKS_PER_SEC ); return 0; }

ビルドの手順

ATLAS と netlib LAPACK を使うものとして説明する.

g++ -I/usr/include/octave-3.0.3 -mthreads mul.cc \
  -L/usr/lib/octave-3.0.3 -Xlinker --enable-auto-import -loctave -lcruft -loctinterp -lreadline -ldl \
  -L/usr/atlas/lib -lptf77blas -latlas -llapack_LINUX -ltmglib_LINUX -lstdc++ -lsupc++

Eclipse でのプログラム開発手順

あらかじめ決めておく事項

Eclipse でのビルドと実行の手順

  1. (前準備)「Octave の機能を呼び出す C++ プログラムの見本と実行手順」の Web ページの記述に従って,プロジェクトの作成と,プロジェクトのプロパティーの設定が済んでいること.

  2. すべてビルド

    CTRL + B(コントロールキーを押しながら「B」) または,「プロジェクト」メニューで「すべてビルド」

    「コンソール」にコンパイルコマンド列が表示されるので,エラーが無いことを確認しておく.

  3. 実行

    デフォルトでは,実行ファイルは, C:\workspace\Hello\Debug\Hello.exe に出来る.(「Hello」はプロジェクト名)

    Eclipse のプロジェクト・エクスプローラで 「Debug」を展開.Hello.exe を右クリックし,「実行」から「ローカル C/C++ アプリケーション」を選ぶ. 数秒ほど待つと,コンソールに結果が出る.

    ※ あるいは,Cygwin のコンソールで, C:\workspace\Hello\Debug\Hello.exe を実行. 数秒ほど待つと,コンソールに結果が出てくる.

    ※ 実行がうまくいかない場合, C:\cygwin\bin\cygwin1.dll を C:\Windows\System32 にコピーすることを忘れている可能性がある.