如果變數 x 的值是一個數,則 num2str(x) 將它轉換成字串。例如
x = 2004;則 xstr 的值是 '2004',試試看
xstr = num2str(x)
ischar(x)就會發現 Matlab 認為 x 不是字串,而 xstr 是字串。
ischar(xstr)
double(x)沒有效果,仍然是 2004,因為 x 本來就是一個數值。而
double(xstr)就回應 50 48 48 52 也就是 '2' 和 '0' 和 '0' 和 '4' 的 ASCII 編號。
函式 int2str( ) 的效果和 num2str( ) 類似, 但是 int2str( ) 會先把數值四捨五入成整數之後再轉換成字串。 例如
double(num2str(3.14))得到 51 46 49 52 也就是 '3' 和 '.' 和 '1' 和 '4' 的 ASCII 編號。而
double(int2str(3.14))就只得到 51,也就是 '3' 的 ASCII 編號。
幹麼要把數值改成字串呢?有一個妙用,就是配合 eval( ) 使用。 下一個小節再說。
函式 int2str( ) 和 num2str( ) 都可以作用在矩陣上, 不過這種情況不常見,就不在這裡傷腦筋了。 讀者萬一遇上這種需求,再去實驗看看就會用了。
最後提醒讀者,有 str2double( ) 和 str2num( ) 兩個函式, 其作用與上述兩個函式相反:就是把數值字串轉換成真正的數值。 很不容易用到,所以也只是告訴讀者有這種東西的存在就是了。
習題
1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9 2x1=2 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18 ... 9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=76 9x9=81