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