1

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

我试过这个例子

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

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

我究竟做错了什么?

4

2 回答 2

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'))
于 2013-08-20T15:13:52.093 回答
0

您可以取返回数的平方根,也可以改用函数 quatmod(q),它通过不取复数的平方来计算复数的正确欧几里得范数(模数)。

于 2016-05-07T10:02:49.397 回答