MATLAB控制运算精度

先来看一段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.806716.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中控制运算精度 

format long 只能设置显示精度,并不能控制运算精度。
在MATLAB中,控制运算精度一般使用 digits 和 vpa。示例:

digits   %显示当前运算精度

digits(n)    %设定默认的精度

你可能感兴趣的:(MATLAB解决方案)