2015-11-08 50 views
0

我在Matlab中编码进化优化程序。我希望所有变量都具有有限的小数点数。 (原因是为了减少搜索空间,例如,如果1 < x < 2,如果小数的位数固定为1,我将只有9个x选项。)使用'round'可以,但计算上有点昂贵。我看到“数字”被修复,但在内存中它保存了所有的数字。在Matlab中限制变量取固定的小数位数

任何帮助表示赞赏, 许多在此先感谢, Ahammed

+0

我猜你正在尝试做一些类似[this](http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5514804)? '数字'是特定于变量精度的符号数学,这很慢,所以它可能不是你想要的。如果有的话,还有['Fixed-Point Designer'](http://www.mathworks.com/help/fixedpoint/fixed-point-designer-for-matlab.html)工具箱。不确定它的性能。你可能也可以使用[整型数据类型](http://www.mathworks.com/help/matlab/matlab_prog/function-summary.html#bqjg7rp)(例如,类似于'uint8(31415)'='100 * 3.1415')。 – horchler

+0

非常感谢你 – Ahammed

+0

从上面的两个回复中,我决定使用整数(如果1 Ahammed

回答

0

的方式固定宽度的优化通常是使用大的整数,而不是完成。例如,如果要将计算限制为6位精度,则可以截断所有乘以百万的值。

与浮点数字格式相比,整数类型的算术运算速度快且精确。我不确定在Matlab中效率会得到什么,但是,由于数字类型通常默认为double,并且大多数函数需要输入doublesingle

+0

非常感谢 – Ahammed