增广矩阵舍入问题

时间:2016-03-07 18:47:01

标签: matlab matrix

我正在尝试创建一个增强矩阵来解决问题,但我不能不对值进行舍入。矩阵d正在尝试扩充到矩阵Diff。我希望Diff中的小数值保持小数,d中的较大值保持较大的值,但每当我尝试添加它时,MATLAB会自动减少所有值。为什么要这样做以及如何解决?

  
    

d = [74000; 56000; 10500; 25000; 17500; 196000; 5000]

  
d =

   74000
   56000
   10500
   25000
   17500
  196000
    5000
  
    

Diff = I - A

  
Diff =

 0.8412   -0.0064   -0.0025   -0.3404   -0.0014   -0.0083   -0.1594
-0.0057    0.7355   -0.0436   -0.0099   -0.0083   -0.0201   -0.3413
-0.0264   -0.1506    0.6443   -0.0139   -0.0142   -0.0070   -0.0236
-0.3299   -0.0565   -0.0495    0.6364   -0.0204   -0.0483   -0.0649
-0.0089   -0.0081   -0.0333   -0.0295    0.6588   -0.0237   -0.0020
-0.1190   -0.0901   -0.0996   -0.1260   -0.1722    0.7632   -0.3369
-0.0063   -0.0126   -0.0196   -0.0098   -0.0064   -0.0132    0.9988
  
    

8月= [差异,d]

  
Aug =

1.0e+05 *

 0.0000   -0.0000   -0.0000   -0.0000   -0.0000   -0.0000   -0.0000    0.7400
-0.0000    0.0000   -0.0000   -0.0000   -0.0000   -0.0000   -0.0000    0.5600
-0.0000   -0.0000    0.0000   -0.0000   -0.0000   -0.0000   -0.0000    0.1050
-0.0000   -0.0000   -0.0000    0.0000   -0.0000   -0.0000   -0.0000    0.2500
-0.0000   -0.0000   -0.0000   -0.0000    0.0000   -0.0000   -0.0000    0.1750
-0.0000   -0.0000   -0.0000   -0.0000   -0.0000    0.0000   -0.0000    1.9600
-0.0000   -0.0000   -0.0000   -0.0000   -0.0000   -0.0000    0.0000    0.0500

1 个答案:

答案 0 :(得分:1)

MATLAB 舍入任何值。如果您在显示Aug时查看左上角,您会看到(1.0e+05)这意味着显示的所有值都是实际值除以1e5(固定小数浮点数)点符号)。由于您使用相对较小的值(A)连接非常大的值(Diff),因此您不会显示小值的有效数字,因为您没有显示足够的小数点。结果,它们看起来像0.这是命令窗口显示数字的方式的工件。

您可以change the display format使用其他内容,例如通常用于大数据范围的“shortg”(默认为“short”),您将看到数据未被舍入。

format shortg

[Diff, d]

   0.8412      -0.0064      -0.0025      -0.3404      -0.0014      -0.0083      -0.1594        74000
  -0.0057       0.7355      -0.0436      -0.0099      -0.0083      -0.0201      -0.3413        56000
  -0.0264      -0.1506       0.6443      -0.0139      -0.0142       -0.007      -0.0236        10500
  -0.3299      -0.0565      -0.0495       0.6364      -0.0204      -0.0483      -0.0649        25000
  -0.0089      -0.0081      -0.0333      -0.0295       0.6588      -0.0237       -0.002        17500
   -0.119      -0.0901      -0.0996       -0.126      -0.1722       0.7632      -0.3369     1.96e+05
  -0.0063      -0.0126      -0.0196      -0.0098      -0.0064      -0.0132       0.9988         5000

通常,您应该很少依赖MAT​​LAB命令窗口输出。如果您认为您的数据是四舍五入的,那么您实际上想要明确地测试它。

data = [Diff, d];
isequal(Diff, data(:,1:end-1))

    1