如何在matlab中计算四元数的范数?
我试过这个例子
a = [1 4 4 -4];
norm = quatnorm(a)
我的预期输出为7,但matlab返回49。
我做错了什么?
答案 0 :(得分:1)
正如@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 x 4):
Q = [q; 2*q]; % example
sqrt(diag(Q*Q'))
答案 1 :(得分:0)
您可以使用返回数字的平方根,也可以使用函数quatmod(q)来计算复数的正确欧几里德范数(模数),而不是取平方数。