先来看一段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的两个值。

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

被折叠的 条评论
为什么被折叠?



