2-3 `弮ずヮ

MATLAB 是一個科學計算軟體,因此可以支援很多常用到的數學函數,例如:

>> x = 4; >> y = abs(x) % 取 x 的絕對值 y = 4 >> y = sin(x) % 取 x 的正弦值 y = -0.7568 >> y = exp(x) % 自然指數 exp(x) y = 54.5982 >> y = log(x) % 自然對數 ln(x) y = 1.3863

MATLAB 也支援複數運算,通常以 i 或 j 代表單位虛數$\sqrt{-1}$ ,例如:

>> z = 5 + 4j % 複數 z = 5 + 4$\sqrt{-1}$ z = 5.0000 + 4.0000i >> z = 5 + 4i % 這也是複數 z = 5 + 4$\sqrt{-1}$ z = 5.0000 + 4.0000i >> y = angle(z) % 複數 z 的相角 y = 0.6747 >> y = real(z) % 複數 z 的實部 y = 5 >> y = imag(z) % 複數 z 的虛部 y = 4 >> y = conj(z) % 複數 z 的共軛複數 y = 5.0000 - 4.0000i >> y = z’ % 這也是複數 z 的共軛複數 y = 5.0000 - 4.0000i >> y = exp(j*pi/6) % $e^{j\theta}=\cos\theta+j\sin\theta$ y = 0.8660 + 0.5000i

其中 pi 是 MATLAB 的內建常數,代表圓周率,約等於 3.1415926…。

Hint
上述範例就是赫赫有名的「尤拉恆等式」(Euler Identity),有修過工程數學的同學應該還記得吧?其實應該翻成「澳衣勒恆等式」才對,因為 Euler 是瑞士數學家,應該是德語發音。

以上這些基本的數學函數,也都通用於向量或矩陣,例如:

>> x = [4 2j 9]; >> y = sqrt(x) % 對 x 開平方 y = 2.0000 1.0000 + 1.0000i 3.0000

在上例中,sqrt 指令會對 x 的每一個元素(無論是實數或複數)進行開平方的運算。

另外還有一些函數是特別針對向量而設計的,例如:

>> x = [1 2 3 0 12]; >> y = min(x) % 向量 x 的極小值 y = 0 >> y = max(x) % 向量 x 的極大值 y = 12 >> y = mean(x) % 向量 x 的平均值 y = 3.6000 >> y = sum(x) % 向量 x 的總和 y = 18 >> y = sort(x) % 向量 x 的排序 y = 0 1 2 3 12

這些函數是針對向量設計的,無論輸入是行向量或列向量,都可傳回正確的結果。若輸入為矩陣時,這些函數將輸入矩陣看成是行向量的集合,並選一對行向量進行運算,例如:

>> x = [1 2 3;4 5 6;7 8 9]; >> y = median(x) % x 每個行向量的中位數 y = 4 5 6 >> y = prod(x) % x 每個行向量的乘積 y = 28 80 162

在本書的第九章「矩陣的處理與運算」有對這些函數的進一步介紹。

若對 MATLAB 函數用法有疑問,可隨時使用 help 指令來尋求線上支援(On-line Help),例如:

>> help sort % 查詢 sort 指令的線上使用說明 sort - Sort array elements This MATLAB function sorts the elements of A in ascending order along the first array dimension whose size does not equal 1. B = sort(A) B = sort(A,dim) B = sort(___,mode) [B,I] = sort(___) Reference page for sort See also issorted, max, mean, median, min, sortrows, unique Other functions named sort fixedpoint/sort, symbolic/sort

MATLAB 的查詢指令及線上支援,可說明如下:


MATLAB程式設計:入門篇