어떻게하면 matlab에서 쿼터니온의 표준을 계산할 수 있습니까?Matlab에서 quternion의 표준을 계산하는 방법은 무엇입니까?
나는이 예
a = [1 4 4 -4];
norm = quatnorm(a)
내 예상 출력은 7 만 matlab에 내가 뭘 잘못 49
을 반환 시도?
어떻게하면 matlab에서 쿼터니온의 표준을 계산할 수 있습니까?Matlab에서 quternion의 표준을 계산하는 방법은 무엇입니까?
나는이 예
a = [1 4 4 -4];
norm = quatnorm(a)
내 예상 출력은 7 만 matlab에 내가 뭘 잘못 49
을 반환 시도?
@Dan은 네이티브 구현을 사용하여 정규 표준 정의의 제곱을 얻고있는 것으로 나타났습니다. 어떤 이유에서 quatnorm
은 유클리드 기준 (제곱합의 제곱근)을 추정 한 후 사각형을 반환합니다.
q = [1 4 4 -4];
MATLAB quatnorm
: (벡터에 대한)
for index = size(q, 1):-1:1
qnorm(index,:) = norm(q(index,:), 2);
end
qout = qnorm.*qnorm;
대안 :
sqrt(q*q')
이 sqrt(quatnorm(q))
를 받고 동일합니다. 위에서 주목하는 바와 같이, quatnorm
또한 연속 매트릭스의 행에 저장 쿼터니온 규범을 추정하도록되어있다 (N × 4 매트릭스 용)
대체 (후 각 행의 놈과 사각형 추정)
Q = [q; 2*q]; % example
sqrt(diag(Q*Q'))
반환 된 숫자의 제곱근을 취하거나 함수의 제곱을 취하지 않고 복소수의 적절한 유클리드 표준 (모듈러스)을 계산하는 대신 quatmod (q) 함수를 사용할 수 있습니다.
다른 예제를 시도하고 예상 답변이 항상 Matlab 응답의 제곱근인지 확인하십시오. – Dan
['quatnorm']에 대한 문서 (http://www.mathworks.com/help/aerotbx/ug/quatnorm.html)는 어떤 종류의 규범이 사용되는지 나타내지 않지만 [Simulink 버전] (http : //www.mathworks.com/help/aeroblks/quaternionnorm.html)는'sqrt'없이 그것을 정의합니다. 이유는 모르겠다. 항공 우주 도구 상자가 없지만 필자가 보았던 것에서는 다소 불량한 설계 선택을하는 것으로 보입니다. – horchler
그리고 잘못하고있는 한 가지는 동일한 이름의 변수를 만들어 실제 '표준'함수를 덮어 쓰는 것입니다. – horchler