対応する要点はhereです。Eigen3 :: Vector3dおよびstd :: vectorを持つSWIG <Vector3d>
SWIGを使用して、PythonからC++の関数を呼び出すことができます。特に、ベクトルを受け入れる関数です。これまでのところ、私はstd_vector.i
とstd::vector<double>
ですべてを実装しましたが、私はそれをすべてEigen::Vector3d
に変換して終了してしまいました。小さなC++の例では、私は最高のPythonからこれを呼び出す方法いえ見当がつかない
#ifndef MYTEST_HPP
#define MYTEST_HPP
#include <iostream>
#include <Eigen/Dense>
void
print_norm(const Eigen::Vector3d & x) {
std::cout << x.norm() << std::endl;
}
void
print_norms(const std::vector<Eigen::Vector3d> & xs) {
for (const auto & x: xs) {
std::cout << x.norm() << std::endl;
}
}
#endif // MYTEST_HPP
です。おそらく、
import mytest
a = [1, 1, 0]
mytest.print_norm(a)
これは合理的ですか? numpy.array
も動作する可能性があります。いずれにせよ、私はmytest.i
に何を入れるべきか分かりません。
ヒント