我正在尝试创建一个增强矩阵来解决问题,但我不能不对值进行舍入。矩阵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
答案 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
通常,您应该很少依赖MATLAB命令窗口输出。如果您认为您的数据是四舍五入的,那么您实际上想要明确地测试它。
data = [Diff, d];
isequal(Diff, data(:,1:end-1))
1