2015-11-08 234 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