2
一部のMatlabコードをC++に変換します。MatlabからC++へ固有行列演算 - ベクトル正規化
質問(方法C++での):
を連結マトリックス内の2つのベクター。
% 1. A 3x1 vector. d0, d1 double. B = [d0*A (d0+d1)*A]; % B is 3x2 % 2. Normalize a set of 3D points % Divide each col by its 3rd value % pts 3xN. C 3xN. % If N = 1 you can do: C = pts./pts(3); if not: C = bsxfun(@rdivide, pts, pts(3,:));
ためのC++コード:正規化は、各アレイ( "PTS" COL)が
1および2のためのMATLABコードの3番目の値で割ること
(既に解決策を見つけました) 1および2:
// 1. Found the solution for that one!
B << d0*A, (d0 + d1)*A;
// 2.
for (int i=0, i<N; i++)
{
// Something like this, but Eigen may have a better solution that I don't know.
C.block<3,1>(0,i) = C.block<3,1>(0,i)/C(0,i);
}
編集: 私は質問をより明確now²であると思います。 #2の
これはEigenのために作られたものです。あなたはどんな問題を抱えていますか? – Peter
@Peter、問題は私がmatlabで行ったように、1行でBを埋めることです。私は解がB << d0 *(* A)、(d0 + d1)*(* A)であると考えます。私はまだそれをテストしていない。 – Pedro77
Matlabは高水準言語であり、C++は低水準です。 Matlabの1行がC++の1行に対応すると期待しているのは妥当ではありません。あなたは、それぞれ異なる賛否両論を持っています。 – Brick