6

私は行列を作成する画像処理アルゴリズムを持っています。私は自分の行列演算コード(乗算、逆数...)を持っています。しかし、私が使用しているプロセッサはARM Cortex-A8プロセッサで、ベクトル化用のNEONコプロセッサがあります。マトリックス操作はSIMD操作の理想的なケースであるため、コンパイラ(-mfpu = neon -mfloat-abi = softfp)にNEONを生成するように依頼しました。私のコードの命令ですが、コンパイラーはそうすることができず、Matrix操作用に独自のNEON組み込みコードを書き込もうとしましたが、それを行うのは非常に困難でした。

そこで、行列演算のベクトル化を約束する固有ライブラリを利用することを考えました。そこで、すぐにEigen C ++ライブラリをダウンロードして、チュートリアルのとおりに使用してみましたが、残念ながら、サンプルプログラムを実行するとコンパイルエラーが発生します。

Eigenの使用経験がある人は誰でも、どんな例が本当に役に立ちますか?親切にそれについて行く方法を私に助けてください。

ヘルプ!

ありがとう


/ home / ubuntu / Documents / eigenにEigenフォルダーがあります。このパスは、EclipseのC++プロジェクトの追加ディレクトリに設定します。次に、次のプログラムを実行します(例)-

#include <Eigen/Core>

// import most common Eigen types
USING_PART_OF_NAMESPACE_EIGEN

int main(int, char *[])
{
  Matrix3f m3;
  m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9;
  Matrix4f m4 = Matrix4f::Identity();
  Vector4i v4(1, 2, 3, 4);

  std::cout << "m3\n" << m3 << "\nm4:\n"
    << m4 << "\nv4:\n" << v4 << std::endl;
}

私が得るエラー-

プロジェクトTest_Eigenの構成デバッグのビルド****

すべて作る

ビルドファイル:../ main.cpp

呼び出し:Sourcery G ++C++コンパイラ

arm-none-linux-gnueabi-g ++ -I / home / ubuntu / Documents / eigen -O0 -g3 -Wall -c -fmessage-length = 0 -fcommon -MMD -MP -MF "main.d" -MT "main .d "-mcpu = cortex-a8 -marm -o" main.o "

"../main.cpp"

../main.cpp:6:エラー:'int' makeの前にコンストラクタ、デストラクタ、または型変換が必要です:***[main.o]エラー1

4

2 に答える 2

10

USING_PART_OF_NAMESPACE_EIGENマクロはEigen3で削除されました。代わりに、単に使用してください

using namespace Eigen;

どうやら、チュートリアルは時代遅れです。

于 2010-07-15T15:32:14.383 に答える
2

私はUbuntu17.04を使用していますが、これは私にとってはうまくいきます。
まず、eigenの公式サイト
でegien3.3.3をダウンロードし ます。eigenというディレクトリに抽出され、そこにcdされます。 2番目:次 のコマンドを1つずつ実行するか、一度に実行するxxx.shファイルにします。


#!/bin/bash
#eigen3 install
#from: http://eigen.tuxfamily.org/index.php?title=Main_Page
#download the package like eigen-eigen-67e894c6cd8f.tar.gz 

mkdir build
cd build
cmake -DEIGEN_TEST_NO_OPENGL=1 .. 
make 
sudo make install

最後に:
テストを行います

#include <eigen3/Eigen/Core>
#include <iostream>

// import most common Eigen types
//USING_PART_OF_NAMESPACE_EIGEN
using namespace Eigen;
using namespace std;
int main(int, char *[])
{
  Matrix3f m3;
  m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9;
  Matrix4f m4 = Matrix4f::Identity();
  Vector4i v4(1, 2, 3, 4);

  cout << "m3\n" << m3 << "\nm4:\n"
    << m4 << "\nv4:\n" << v4 << endl;
}

注:
インストールされた結果を見つけるには、/ usr / local / include / eigen3 を参照してください。何か変更がある場合は、 mytinx
を参照してください。

于 2017-06-06T05:00:02.160 に答える