2017-01-09 89 views
0

我正在MATLAB中使用数组A。该数组中的值最多有5位小数。我想将这些值截断为更少的小数点。截断变量MATLAB

有没有办法做到这一点?

谢谢!

+2

你真的想使用精度要求不高或者只显示不同的看法? – excaza

+0

总结一下:如果你真的想因为某种原因降低精度,可以看看'fix','round','ceil','floor'。如果你只是想更简洁地展示一些东西,可以看一下'format'。 –

回答

1

出于某种原因,Matlab的 “截断” 功能被称为fix。所以

>> fix(3.5) 
ans = 3 

>> fix(-3.5) 
ans = -3 

要截断,圆,地板或小区什么小数的定数,乘以几十权力,截形,圆形,地板或小区,再由几十权力划分的结果。

所以:

>> fix(123.456 * 10^2) 
ans = 12345 

>> ans/10^2 
ans = 123.45 
+0

好奇你为什么使用'fix'进行整数舍入,并且在乘法和除法上进行变通以实现舍入? MATLAB有一个非常好的循环函数,可以循环到给定的位数... – Wolfie

+1

问题是关于截断,而不是舍入。 'fix(3.7)'和'round(3.7)'给出不同的结果。我使用乘法和除法的原因是因为'fix'不需要精确的参数,而且旧版本的Matlab中的其他函数也没有。 – giusti

+0

由于没有精确的参数,我明白了'*'和'/'的用法......只是查询'fix'与'round',但你关于截断与舍入的观点是公平的。 – Wolfie

3

舍入位数:

为了完善的值(或基质),以小数位的给定数目的,使用round,例如为2位小数...

round(1.2345, 2) 

ans = 1.2300 

为了也未显示尾随零,首先将格式更改为shortg

format shortg 

round(1.2345, 2) 

ans = 1.23 

格式compact可以达到类似的结果,请根据以下文档选择最适合您的需求的结果。

文档:

回合:https://uk.mathworks.com/help/matlab/ref/round.html

格式:https://uk.mathworks.com/help/matlab/ref/format.html