24小时热门版块排行榜    

查看: 4300  |  回复: 10
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

luzongxing

银虫 (小有名气)

[求助] matlab求解正交矩阵。 已有1人参与

1,我们求解变换矩阵的时候得到一个AX=b的矩阵,
现在如何通过matlab得到3*3的旋转矩阵R比较精确地解,一下是我从网上查找的一些常用的解法。
%一是用伪逆法求解
% X=pinv(A)*b

% % 二是用左除法求解,
X=A\b

% %  三是用最小二乘法求解,
% X=lsqnonneg(A,b)

%四LU分解法
% [L,U]=lu (A);
% X=U\(L\b)

2.求得的矩阵R,理论上R应该是一个标准的单位正交矩阵,如果给点的A和B的对应关系不是那么精确,可能求出来的R跟正交矩阵有点偏差。
R*R'=[0.9985 -0.0085 0.0013;
           0.0045 1.0032  -0.0018;
           0.0032 0.0063  1.0024]

那么如何修正这个旋转矩阵,让R*R'的约接近于单位正交矩阵。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★
luzongxing: 金币+5, ★★★★★最佳答案 2013-12-29 21:07:45
引用回帖:
8楼: Originally posted by luzongxing at 2013-12-26 21:22:59
就是这个。谢谢你
请问这个的数学方法的理论计算过程在哪边可以找到。
方便的话可以留个邮箱吗?

还有这个分数怎么给你。...

这个是矩阵指数的一个性质,你可以查看一下矩阵指数的维基百科页面,性质那一栏里的倒数第二项(斜对称矩阵是反对称矩阵的别称):

  • exp(X^T) = (exp X)^T,其中X^T表示X的转置。从中可以推出,如果X是对称矩阵,则e^X也是对称矩阵;如果X是斜对称矩阵,则e^X是正交矩阵。


另外如果你对群论比较熟悉的话,坐标旋转构成一个特殊正交群,而特殊正交群的李代数是反对称矩阵(就是矩阵的转置是矩阵本身的相反数)。而实矩阵的李代数是指数映射携带的。
9楼2013-12-27 14:48:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

virtualzx

木虫 (著名写手)

请问你的R矩阵是从什么地方出来的,和AX=B有啥联系啊?
2楼2013-12-26 14:46:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

luzongxing

银虫 (小有名气)

引用回帖:
2楼: Originally posted by virtualzx at 2013-12-26 14:46:14
请问你的R矩阵是从什么地方出来的,和AX=B有啥联系啊?

旋转矩阵R是点不同坐标系下的旋转变换矩阵。是3*3的矩阵、

第一问你就可以假设A是一个9*9的满秩矩阵
b是一个1*9的矩阵。来求矩阵X。
x是一个1*9的矩阵。求出来是R中的各个元素。
怎么有更高精度的算法。

第二问,由于在两个坐标系中的点对应不是那么精确,可能导致旋转矩阵算出来不是标准的单位正交矩阵,这时候需要微小的修正。
3楼2013-12-26 17:28:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

xzhdty: 2013-12-27 06:18:54
引用回帖:
3楼: Originally posted by luzongxing at 2013-12-26 04:28:23
旋转矩阵R是点不同坐标系下的旋转变换矩阵。是3*3的矩阵、

第一问你就可以假设A是一个9*9的满秩矩阵
b是一个1*9的矩阵。来求矩阵X。
x是一个1*9的矩阵。求出来是R中的各个元素。
怎么有更高精度的算法。

...

嗯?奇怪呢,一般都是x.R=y求R,x和y都是3维矢量,或者A.R=B求R,A和B的所有特征值相等,没遇到过你说的9x9的情况。

既然是旋转变换,不单是正交矩阵,而且需要是特殊正交矩阵。特殊正交矩阵可以要求矩阵对数反对称得到。就是先求矩阵自然对数,然后反对称化,再求矩阵指数就行了
Q=logm(R)
Qsym=1/2(Q-Q.')
Rsym=expm(Qsym)
4楼2013-12-27 01:45:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见