Matlab 有一整套從浮點數取整數的函式。最基本的就是取「整數部份」, 也就相當於將小數部份「無條件捨去」。指令是 fix( ),例如 fix(3.2) 和 fix(3.8) 都是 3,而 fix(-3.2) 和 fix(-3.8) 也都是 -3。 但是最常用的「取整數」應該是四捨五入 (rounding),函式是 round( )。例如 round(3.2) 是 3,但 round(3.8) 是 4; 而 round(-3.2) 是 -3,但 round(-3.8) 是 -4。
Matlab 產生的亂數,都是介於 0 與 1 之間的數。 如果您需要一個全是整數的「隨便」矩陣,可以將這些亂數全部乘上一個常數, 然後四捨五入成整數。例如
round(10*rand(3,3))製造一個 3 維方陣,而它的元素都是介於 0 和 10 之間的「隨便」整數。 但是,這種做法只能得到非負的整數。如果還想要有負數,可以說
round(10*rand(3,3)) - 5就會製造出來介於 -5 和 5 之間的「隨便」一個整數方陣。
以上只是原則,您應該知道,可以自己調整參數,達到想要的效果。
另外兩個常用的「取整數」作法是取「最小上界」(ceiling 天花板) 和「最大下界」(floor 地板),函式分別是 ceil( ) 和 floor( )。 若 x 是一個數,則 ceil(x) 就是所有 >= x 的整數中最小的那個, 例如 ceil(3.2) 是 4,但是 ceil(-3.2) 是 -3。 而 floor(x) 是所有 <= x 的整數中最大的那個, 例如 floor(3.2) 是 3,但是 floor(-3.2) 是 -4。
如果 x 本來就是個整數,那麼 fix(x), round(x), ceil(x) 和 floor(x) 都是 x 本身,不會改變。
習題