如何在Matlab中计算四元数的范数?

时间:2013-08-20 14:22:50

标签: matlab quaternions

如何在matlab中计算四元数的范数?

我试过这个例子

a = [1 4 4 -4];
norm = quatnorm(a)

我的预期输出为7,但matlab返回49。

我做错了什么?

2 个答案:

答案 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)来计算复数的正确欧几里德范数(模数),而不是取平方数。