Matlab 教材:數值字串

如果變數 x 的值是一個數,則 num2str(x) 將它轉換成字串。例如

x = 2004;
xstr = num2str(x)
則 xstr 的值是 '2004',試試看
ischar(x)
ischar(xstr)
就會發現 Matlab 認為 x 不是字串,而 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( ) 兩個函式, 其作用與上述兩個函式相反:就是把數值字串轉換成真正的數值。 很不容易用到,所以也只是告訴讀者有這種東西的存在就是了。

習題

  1. 寫一個 Matlab 程式讓它輸出如以下規格排列的九九乘法表 (當然要把 ... 補成字串,而不是輸出 ...):
     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
單維彰 (2004/01/02) --- [Prev] [Next] [Up]