MATLAB控制运算精度

本文探讨了MATLAB中运算精度的问题,解释了为何在t1和t2看似相等的情况下,result1和result2的结果会有显著差异。原因是MATLAB默认显示的小数位数与实际运算精度不同。文章介绍了如何使用`digits`和`vpa`来控制运算精度,并指出`vpa`返回的是符号变量,仅适用于初等运算。此外,还提到了MATLAB中进行四舍五入的`roundn`函数的用法。

先来看一段MATLAB代码


 

  clear;

  theta = 264.3783;
  t1 = [cos(theta); cos(2*theta); cos(3*theta); cos(4*theta); sin(theta); sin(2*theta); sin(3*theta); sin(4*theta); 1]; 
  t2 = [0.8849    0.5661    0.1170   -0.3591    0.4658    0.8243    0.9931    0.9333    1.0000]';
     
  Ximage = [7.8013 -10.5825 -12.7495 4.8067 16.3082 7.2674  1.5018  0.0946 -12.8618]';
    

  result1 = t1'*Ximage;

  result2 = t2'*Ximage;


 

在MATLAB控制台下查看t1与t2的值是一样的,但是结果却相差很多:

result1 与result2 的值符号都变了,这是为什么呢?

 

原来MATLAB显示数据时,默认现实小数点后面4位,但实际运算所使用的精度并不是这样。
所以上述的t1和t2在计算时候,值并不相等; 之所以result1和result2符号都发生改变,是因为Ximage里某些值比较大的缘故。
其实这两个值,都是非常靠近原点0的两个值。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值