Chapter 1 MATLAB 簡介
Hung-Yuan Fan (范洪源)
Department of Mathematics, National Taiwan Normal University, Taiwan
Spring 2017
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
Outline
1.1 MATLAB 的優點 1.2 MATLAB 的缺點 1.3 MATLAB 的環境
1.4 把 MATLAB 當作簡易型計算機使用
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 2/40
Section 1.1
MATLAB 的優點
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
MATLAB 小傳 (1/2)
由 MathWorks 公司於 1984 年推出的數學軟體。
名稱是由「矩陣實驗室」 ﹙ MATrix LABoratory)所合成。
MATLAB 為各種動態系統模擬、數位訊號處理、科學計算、
科學目視等領域的標準程式語言。
MATLAB 的許多的核心計算技術是源自於 LINPACK 及 EISPACK 。
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 4/40
MATLAB 小傳 (2/2)
MATLAB 早在 1978 年已現身,是用 Fortran 撰寫的免費軟 體,作者是當時任教於新墨⻄哥大學的 Cleve Moler 教授。
Jack Little(又稱為 John Little)將 MATLAB 以 C 語言重 寫,並於 1984 年成立 MathWorks 公司,首次推出 MATLAB 商用版。
MathWorks 在 Newsgroup 上進行對使用者的技術指導,在 WWW 興起之後,就提供各項技術支援與搜尋功能,並在 內聯網(Intranet)方面,以 Web 與資料庫的整合來進行軟 體 bug 的追蹤、修復與管理。
MATLAB 是㇐個計算核心,圍繞著這個計算核心,有許多 針對不同應用所開發的應用程式,稱為工具箱
(Toolboxes)。
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
MATLAB 的特色
MATLAB 有自己專屬的程式語言。
MATLAB 是㇐個包含極為多樣函式庫(functions)的龐大 程式。
MATLAB 程式是㇐個程序式的程式語言與㇐個整合開發環 境(integrated development environment, IDE)的組合,
IDE 包含程式編輯器與偵錯器(editor and debugger)以 及可用來進行多種型態科學計算的豐富函式集。
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 6/40
MATLAB 的優點
容易使用: 直譯式語言
平台獨立性: 跨作業系統的程式語言
預設函式: 提供大量的預設函式庫、科學計算問題所需的基 本解決方案和特別功能的工具箱
與裝置無關的繪圖: 直接顯示在任何執行 MATLAB 電腦的 圖形輸出裝置上
使用者圖形介面 (GUI): 輕鬆建立互動式程式介面
MATLAB 編譯器
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
Section 1.2 MATLAB 的缺點
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 8/40
MATLAB 的缺點
執行速度較慢:
MATLAB 是直譯式語言,故其執行速度比編譯式語言慢。
可結構化 MATLAB 程式設計以獲取向量化程式碼的最大效 能,或是利用動態編譯器獲得舒緩。
價格昂貴:
完整版的 MATLAB 比㇐般的 C 或 Fortran 程式編譯器貴約 五至十倍。
對企業而言,MATLAB 仍具有其經濟效益,但對個人使用者
來說,售價還是太貴了。
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
Section 1.3 MATLAB 的環境
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 10/40
MATLAB 工作桌面的工具及視
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
MATLAB 工作桌面的外觀 (R2014b)
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 12/40
MATLAB 工作桌面的外觀 (R2018b)
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
MATLAB 的版本
MATLAB ㇐年推出兩個版本。
版本編號是以年份加上字⺟ a 與 b 來區分。
例如 2012b 是 2012 年的後半年所推出。
2012b 對應的 MATLAB 版本是 8.0。
在指令視窗的提示符號 >> 後輸入
>> ver matlab
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 14/40
指令視窗 (Command Window)
當按下鍵盤上的 Enter 鍵後,MATLAB 就能計算答案,並 且把答案儲存在㇐個名為area的變數中。
>> area = pi ∗ 2.5b2 area =
19.6350
如果宣告式太⻑,以致無法利用㇐行文字完整輸入,我們可 以在行尾加上省略符號 (...) 。
>> x1 = 1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6;
>> x1 = 1 + 1/2 + 1/3 + 1/4...
+1/5 + 1/6;
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
在指令視窗輸入宣告式
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 16/40
工具帶
工具帶是㇐序列橫跨工作桌面頂端的應用工具,其控制欄是 藉由指令功能分類,先是欄標(tabs)然後是群組
(groups)。
圖 1.3 的欄標有 Home(首頁)、Plots(繪圖)、Apps(應用
程式) 、Editor(編輯器)等。當其中㇐個欄標被選取時,就
會呈現不同群組的控制欄。在 Home 欄標裡,包括 File(檔
案) 、Variable(變數)、Code(程式碼)等群組。
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
圖 1.3 工具帶
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 18/40
指令歷史視窗 (Command History Window)
顯示㇐連串使用者曾經在指令視窗中輸入過的指令。
若想在指令歷史視窗內刪除某個指令,可使用滑鼠右鍵點擊
想要刪除的指令,此時快顯功能表會提供 Delete 選項。
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
檔案視窗 (Document Window)
檔案視窗亦稱為編輯/偵錯視窗(Edit/Debug Window)。
用來產生新的 M 檔案,或者用來修改已經存在的檔案。
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 20/40
編輯/偵錯視窗 (1/2)
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
編輯/偵錯視窗 (2/2)
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 22/40
圖形視窗 (Figure Window)
用來顯示 MATLAB 的繪圖結果。
它可以是二維或是三維的資料圖形、影像,或是使用者圖形 介面(GUI)。
程式範例: sin_x.m
% sin_x.m: This m-file calculates and plots the
% function sin(x) for 0 <= x <= 6.
x = 0 : 0.1 : 6;
y = sin(x);
plot(x, y)
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
圖形視窗的範例
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 24/40
MATLAB 工作區 (Workspace)
工作區是所有可以使用的變數與陣列的聚集區域。
所有指令視窗內執行的指令分享相同的工作區,它們會使用 到裡面的共同變數。
MATLAB 函式均有其各自專屬的工作區。
程式範例: calc_area.m
% This m-file calculates the area of a circle,
% and displays the result.
radius = 2.5;
area = pi ∗ 2.5 b 2;
string = ['The area of the circle is ' num2str(area)];
disp(string);
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
工作區的變數有哪些?
在指令視窗中鍵入 whos 指令,可查閱目前 MATLAB 工作區內 的變數狀態。
>> whos
Name Size Bytes Class area 1 ×1 8 double array radius 1 ×1 8 double array string 1 ×32 64 char array x 1 ×61 488 double array y 1 ×61 488 double array
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 26/40
㇐些重要的指令
指令 說明
demo 執行 MATLAB 的內建程式示範
clc 清除指令視窗的內容
clf 清除圖形視窗的內容
clear all 清除工作區的所有變數 clear var1, var2,… 清除變數 var1, var2,…
ctrl+c 重新取回程式的控制權
diary 檔名 記錄使用 MATLAB 期間執行過的工作 diary on/off 開啟/關閉 diary 指令的功能
which 函式名 顯示函式所在的絕對路徑
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
工作區瀏覽器 (Workspace Browser) 和 陣列編輯器 (Array Editor)
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 28/40
現行資料夾瀏覽器 (Current Directory Browser)
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
說明瀏覽器 (Help Browser)
從工具帶中選擇 鍵來啟動
在指令視窗鍵入 helpdesk 或是 helpwin
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 30/40
線上查詢的指令
MATLAB 線上求助指令
lookfor 指令跟 help 指令不太相同
help 函式名: 尋找完全符合特定名稱的函式 doc 函式名: 開啟該函式的說明文件視窗
lookfor 關鍵字: 尋找註解標頭包含該關鍵字的函式
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
利用 help 指令來查詢 sqrt() 的用法:
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 32/40
利用 doc 指令來查詢 sqrt() 的用法:
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
利用 lookfor 指令搜尋包含關鍵字Schur的函式:
>> lookfor Schur
ordschur - Reorder eigenvalues in Schur factorization.
schur - Schur decomposition.
schord - Ordered schur decomposition.
aresolv - Continuous algebraic Riccati equation solver (eigen & schur).
blkrsch - Block-ordered real Schur form.
cschur - Ordered complex Schur form.
daresolv - Discrete algebraic Riccati equation solver (eigen & schur).
hqr10 - Ordered complex Schur decomposition.
rschur - is not available. To compute a real ordered Schur form.
schbal - Schur balanced truncation (stable plant).
schmr - Schur balanced truncation (unstable plant).
vschur - function [u,t] = vschur(mat).
bdschur - Block-diagonal Schur factorization.
>>
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 34/40
MATLAB 搜尋路徑
如果在命令提示列裡鍵入㇐個名稱,MATLAB 會使用下列方式 來尋找這個名稱的位置:
1
這個名稱是否為㇐個變數?
如果是,MATLAB 將會顯示這個變數目前的內容。
2
這個名稱是否為存在於現行資料夾裡的 M 檔案?
如果是,MATLAB 將會執行這個函式或指令。
3
這個名稱是否為存在於搜尋路徑中的 M 檔案?
如果是,MATLAB 將會執行這個函式或指令。
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
㇐些注意事項
Remark
如果定義㇐個與 MATLAB 函式或指令相同名稱的變數,則該函 式或指令會變成 不能使用!
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 36/40
Section 1.4 把 MATLAB 當作
簡易型計算機使用
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
MATLAB 的純量運算
MATLAB 可當作㇐台簡易型計算機來執行數學運算。
利用 +、–、 ∗、/ 及b符號分別代表加減乘除及次方運算。
運算 數學式 宣告式 加法 a + b a + b 減法 a − b a − b 乘法 a × b a ∗ b 除法 a ÷ b a/b 次方 a b a bb
MATLAB 預設變數 ans 的值可以用在後續的計算,但要小 心使用!因為每次㇐個沒有等號的宣告式 被執行時,ans 的 值將會被覆寫。
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 38/40
㇐個簡單的算例
假設圓柱的半徑是 0.1 公尺,且⻑度是 0.5 公尺。如何利用 MATLAB 宣告式來計算圓柱的體積?
>> A = pi ∗ 0.1b2 A =
0.0314
>> V = A ∗ 0.5 V =
0.0157
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . .
. .
. . . . .
Thank you for your attention!
Hung-Yuan Fan (范洪源), Dep. of Math., NTNU, Taiwan Chap. 1, Computer Programming 40/40