加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab表达式里出现莫名长的数字问题

(2011-06-27 09:11:38)
标签:

matlab问题

文化

今天我进行坐标变换,rx是绕x轴旋转的函数,rz是绕z轴旋转的函数

rx(-90)

ans =

   1.000000000000000                                                     0
                    0.000000000000000   1.000000000000000                   0
                   -1.000000000000000   0.000000000000000                   0
                                                      1.000000000000000

 rz(theta1)
 
ans =
 
[ cos(theta1), -sin(theta1), 0, 0]
[ sin(theta1),  cos(theta1), 0, 0]
          0,            0, 1, 0]
          0,            0, 0, 1]

结果:

T12=rx(-90)*rz(theta2)

T12 =
 
                                                    cos(theta2),                                                    -sin(theta2),                                                 0, 0]
[ (4967757600021511*sin(theta2))/81129638414606681695789005144064, (4967757600021511*cos(theta2))/81129638414606681695789005144064,                                                 1, 0]
                                                   -sin(theta2),                                                    -cos(theta2), 4967757600021511/81129638414606681695789005144064, 0]
                                                              0,                                                               0,                                                 0, 1]

莫名出现了:4967757600021511/81129638414606681695789005144064等较长数字。

原因是:rx(-90)进行运算结果保存为long的类型,在与符号运算时,四舍五入时产生的。

解决办法:

T12=[1 0 0 0;0 0 1 0;0 -1 0 0;0 0 0 1]*rz(theta2)
 
T12 =
 
cos(theta2), -sin(theta2), 0, 0]
           0,            0, 1, 0]
[ -sin(theta2), -cos(theta2), 0, 0]
           0,            0, 0, 1]

在数值运算里出现这种莫名长度数字的解决办法是:

format long

2/5

0.4

对矩阵:

format long

aa=double(aa)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有