2
일부 Matlab 코드를 C++로 변환.Matlab에서 C++까지 고유 행렬 연산 - 벡터 정규화
질문 (방법 C++에서 행) 매트릭스
연결할 두 벡터.
% 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++ 코드 : 3 차 값
매트랩 1 코드 및 2로 나누어
표준화 각 배열 ("PTS"COL) (이미 해결책을 발견) 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
@ 피터, 문제는 matlab에서했던 것처럼 한 줄에 B를 채우는 것입니다. 솔루션은 B << d0 * (* A), (d0 + d1) * (* A) 일 수 있다고 생각합니다. 그러나 나는 아직 그것을 시험하지 않았다. – Pedro77
Matlab은 고급 언어이고 C++은 하위 레벨입니다. Matlab의 한 줄이 C++의 한 줄과 일치한다는 기대는 합리적이지 않습니다. 각기 다른 장단점이 있습니다. – Brick