Matlab 教材:指令字串

如果變數 s 的值是一個字串,而且這個字串的內容又是一個合文法的 Matlab 指令,則

eval(s)
就是要 Matlab 執行 s 的字串內容。例如
eval('1 + 1')
就等於下指令
1 + 1
再例如
s = 'magic(3)';
eval(s)
就等於下了指令
magic(3)
得到 3 階魔方陣。

讓 int2str( ) 配合 eval( ) 可以節省一些打字的功夫。 譬如說,現在我想要製造七個矩陣,命名為 M1, M2, ..., M7, 分別依序是 3 階、4 階、...、9 階的魔方陣, 則當然可以寫七遍指令

M1 = magic(3);
M2 = magic(4);
M3 = magic(5);
M4 = magic(6);
M5 = magic(7);
M6 = magic(8);
M7 = magic(9);
但是也可以利用迭代迴圈,寫成
for p=1:7,
    eval(['M', int2str(p), ' = magic(', int2str(p+2), ');']);
end;

習題

  1. v = diag(hilb(9));
    寫一段程式讓 Matlab 印出來以下九列文字
    9 階 Hilbert 方陣的第 1 個對角線元素是 1
    9 階 Hilbert 方陣的第 2 個對角線元素是 0.33333
    ...
    9 階 Hilbert 方陣的第 9 個對角線元素是 0.058824
[BCC16-B]
單維彰 (2004/01/02) ---
[Prev] [Next] [Up]