• 沒有找到結果。

Chapter 1 MATLAB 簡介

N/A
N/A
Protected

Academic year: 2022

Share "Chapter 1 MATLAB 簡介"

Copied!
69
0
0

加載中.... (立即查看全文)

全文

(1)

Chapter 1 MATLAB 簡介

Hung-Yuan Fan (范洪源)

Department of Mathematics, National Taiwan Normal University, Taiwan

Spring 2020

(2)

Outline

L1 MATLAB 的優點 L2 MATLAB 的缺點 L3 MATLAB 的環境

L4 把 MATLAB 當作簡易型計算機使用

(3)

Lecture 1

MATLAB 的優點

(4)

MATLAB 小傳 (1/2)

由 MathWorks 公司於 1984 年推出的數學軟體。

名稱是由「矩陣實驗室」﹙

MATrix LABoratory)所合成。

MATLAB 為各種動態系統模擬、數位訊號處理、科學計算、 科學目視等領域的標準程式語言。

MATLAB 的許多的核心計算技術是源自於 LINPACK 及 EISPACK 。

(5)

MATLAB 小傳 (1/2)

由 MathWorks 公司於 1984 年推出的數學軟體。

名稱是由「矩陣實驗室」﹙

MATrix LABoratory)所合成。

MATLAB 為各種動態系統模擬、數位訊號處理、科學計算、

科學目視等領域的標準程式語言。

MATLAB 的許多的核心計算技術是源自於 LINPACK 及 EISPACK 。

(6)

MATLAB 小傳 (1/2)

由 MathWorks 公司於 1984 年推出的數學軟體。

名稱是由「矩陣實驗室」﹙

MATrix LABoratory)所合成。

MATLAB 為各種動態系統模擬、數位訊號處理、科學計算、

科學目視等領域的標準程式語言。

MATLAB 的許多的核心計算技術是源自於 LINPACK 及 EISPACK 。

(7)

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)。

(8)

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)。

(9)

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)。

(10)

MATLAB 小傳 (2/2)

MATLAB 早在 1978 年已現身,是用 Fortran 撰寫的免費軟 體,作者是當時任教於新墨西哥大學的 Cleve Moler 教授。

Jack Little(又稱為 John Little)將 MATLAB 以 C 語言重 寫,並於 1984 年成立 MathWorks 公司,首次推出 MATLAB 商用版。

MathWorks 在 Newsgroup 上進行對使用者的技術指導,在 WWW 興起之後,就提供各項技術支援與搜尋功能,並在 內聯網(Intranet)方面,以 Web 與資料庫的整合來進行軟 體 bug 的追蹤、修復與管理。

MATLAB 是一個計算核心,圍繞著這個計算核心,有許多 針對不同應用所開發的應用程式,稱為工具箱

(11)

MATLAB 的特色

MATLAB 有自己專屬的程式語言。

MATLAB 是一個包含極為多樣函式庫(functions)的龐大 程式。

MATLAB 程式是一個程序式的程式語言與一個整合開發環 境(Integrated Development Environment, IDE)的組合, IDE 包含程式編輯器與偵錯器(Editor and Debugger)以及 可用來進行多種型態科學計算的豐富函式集。

(12)

MATLAB 的特色

MATLAB 有自己專屬的程式語言。

MATLAB 是一個包含極為多樣函式庫(functions)的龐大 程式。

MATLAB 程式是一個程序式的程式語言與一個整合開發環 境(Integrated Development Environment, IDE)的組合, IDE 包含程式編輯器與偵錯器(Editor and Debugger)以及 可用來進行多種型態科學計算的豐富函式集。

(13)

MATLAB 的特色

MATLAB 有自己專屬的程式語言。

MATLAB 是一個包含極為多樣函式庫(functions)的龐大 程式。

MATLAB 程式是一個程序式的程式語言與一個整合開發環 境(Integrated Development Environment, IDE)的組合,

IDE 包含程式編輯器與偵錯器(Editor and Debugger)以及 可用來進行多種型態科學計算的豐富函式集。

(14)

MATLAB 的優點

容易使用: 直譯式語言。

平台獨立性: 跨作業系統的程式語言。

預設函式: 提供大量的預設函式庫、科學計算問題所需的基 本解決方案和特別功能的工具箱。

與裝置無關的繪圖: 直接顯示在任何執行 MATLAB 電腦的 圖形輸出裝置上

使用者圖形介面 (GUI): 輕鬆建立互動式程式介面。

MATLAB 編譯器: 將使用者所寫的 MATLAB 函式轉換成 C 語言程式碼。

(15)

MATLAB 的優點

容易使用: 直譯式語言。

平台獨立性: 跨作業系統的程式語言。

預設函式: 提供大量的預設函式庫、科學計算問題所需的基 本解決方案和特別功能的工具箱。

與裝置無關的繪圖: 直接顯示在任何執行 MATLAB 電腦的 圖形輸出裝置上

使用者圖形介面 (GUI): 輕鬆建立互動式程式介面。

MATLAB 編譯器: 將使用者所寫的 MATLAB 函式轉換成 C 語言程式碼。

(16)

MATLAB 的優點

容易使用: 直譯式語言。

平台獨立性: 跨作業系統的程式語言。

預設函式: 提供大量的預設函式庫、科學計算問題所需的基 本解決方案和特別功能的工具箱。

與裝置無關的繪圖: 直接顯示在任何執行 MATLAB 電腦的 圖形輸出裝置上

使用者圖形介面 (GUI): 輕鬆建立互動式程式介面。

MATLAB 編譯器: 將使用者所寫的 MATLAB 函式轉換成 C 語言程式碼。

(17)

MATLAB 的優點

容易使用: 直譯式語言。

平台獨立性: 跨作業系統的程式語言。

預設函式: 提供大量的預設函式庫、科學計算問題所需的基 本解決方案和特別功能的工具箱。

與裝置無關的繪圖: 直接顯示在任何執行 MATLAB 電腦的 圖形輸出裝置上

使用者圖形介面 (GUI): 輕鬆建立互動式程式介面。

MATLAB 編譯器: 將使用者所寫的 MATLAB 函式轉換成 C 語言程式碼。

(18)

Lecture 2

MATLAB 的缺點

(19)

MATLAB 的缺點

執行速度較慢:

MATLAB 是直譯式語言,故其執行速度比編譯式語言慢。

可結構化 MATLAB 程式設計以獲取向量化程式碼的最大效 能,或是利用動態編譯器獲得舒緩。

價格昂貴:

完整版的 MATLAB 比一般的 C 或 Fortran 程式編譯器貴約 五至十倍。

對企業或是學術研究單位而言,MATLAB 仍具有其經濟效 益,但對個人使用者來說,售價還是太貴了。

(20)

MATLAB 的缺點

執行速度較慢:

MATLAB 是直譯式語言,故其執行速度比編譯式語言慢。

可結構化 MATLAB 程式設計以獲取向量化程式碼的最大效 能,或是利用動態編譯器獲得舒緩。

價格昂貴:

完整版的 MATLAB 比一般的 C 或 Fortran 程式編譯器貴約 五至十倍。

對企業或是學術研究單位而言,MATLAB 仍具有其經濟效 益,但對個人使用者來說,售價還是太貴了。

(21)

Lecture 3

MATLAB 的環境

(22)

MATLAB 工作桌面的工具及視窗

(23)

MATLAB 工作桌面的外觀 (R2014b)

(24)

MATLAB 工作桌面的外觀 (R2018b)

(25)

MATLAB 的版本

MATLAB 一年推出兩個版本。

版本編號是以年份加上字母 a 與 b 來區分。

例如 2012b 是 2012 年的後半年所推出。 2012b 對應的 MATLAB 版本是 8.0。 在指令視窗的提示符號 >> 後輸入

>>

ver

matlab

(26)

MATLAB 的版本

MATLAB 一年推出兩個版本。

版本編號是以年份加上字母 a 與 b 來區分。

例如 2012b 是 2012 年的後半年所推出。

2012b 對應的 MATLAB 版本是 8.0。

在指令視窗的提示符號 >> 後輸入

>>

ver

matlab

(27)

指令視窗 (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;

(28)

指令視窗 (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;

(29)

指令視窗 (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;

(30)

指令視窗 (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;

(31)

在指令視窗輸入宣告式

(32)

工具帶

工具帶是一序列橫跨工作桌面頂端的應用工具,其控制欄是 藉由指令功能分類,先是欄標(tabs)然後是群組

(groups)。

圖 1.3 的欄標有 Home(首頁)、Plots(繪圖)、Apps(應用 程式)、Editor(編輯器)等。當其中一個欄標被選取時,就 會呈現不同群組的控制欄。在 Home 欄標裡,包括 File(檔 案)、Variable(變數)、Code(程式碼)等群組。

(33)

工具帶

工具帶是一序列橫跨工作桌面頂端的應用工具,其控制欄是 藉由指令功能分類,先是欄標(tabs)然後是群組

(groups)。

圖 1.3 的欄標有 Home(首頁)、Plots(繪圖)、Apps(應用 程式)、Editor(編輯器)等。當其中一個欄標被選取時,就 會呈現不同群組的控制欄。在 Home 欄標裡,包括 File(檔 案)、Variable(變數)、Code(程式碼)等群組。

(34)

圖 1.3 工具帶

(35)

指令歷史視窗 (Command History Window)

顯示一連串使用者曾經在指令視窗中輸入過的指令。

若想在指令歷史視窗內刪除某個指令,可使用滑鼠右鍵點擊 想要刪除的指令,此時快顯功能表會提供 Delete 選項。

(36)

指令歷史視窗 (Command History Window)

顯示一連串使用者曾經在指令視窗中輸入過的指令。

若想在指令歷史視窗內刪除某個指令,可使用滑鼠右鍵點擊 想要刪除的指令,此時快顯功能表會提供 Delete 選項。

(37)

檔案視窗 (Document Window)

檔案視窗亦稱為編輯/偵錯視窗(Edit/Debug Window)。

用來產生新的 M 檔案,或者用來修改已經存在的檔案。

(38)

檔案視窗 (Document Window)

檔案視窗亦稱為編輯/偵錯視窗(Edit/Debug Window)。

用來產生新的 M 檔案,或者用來修改已經存在的檔案。

(39)

編輯/偵錯視窗 (1/2)

(40)

編輯/偵錯視窗 (2/2)

(41)

圖形視窗 (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)

(42)

圖形視窗 (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)

(43)

圖形視窗的範例

(44)

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);

(45)

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);

(46)

工作區的變數有哪些?

在指令視窗中鍵入 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

(47)

工作區的變數有哪些?

在指令視窗中鍵入 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

(48)

一些重要的指令

指令 說明

demo 執行 MATLAB 的內建程式示範

clc 清除指令視窗的內容

clf 清除圖形視窗的內容

clear all 清除工作區的所有變數 clear var1, var2,… 清除變數 var1, var2,…

CTRL+C 重新取回程式的控制權

diary 檔名 記錄使用 MATLAB 期間執行過的工作 diary on/off 開啟/關閉 diary 指令的功能

which 函式名 顯示函式所在的絕對路徑

(49)

工作區瀏覽器 (Workspace Browser) 和

陣列編輯器 (Array Editor)

(50)

現行資料夾瀏覽器 (Current Directory Browser)

(51)

說明瀏覽器 (Help Browser)

從工具帶中選擇 鍵來啟動

在指令視窗鍵入 helpdesk 或是 helpwin

(52)

說明瀏覽器 (Help Browser)

從工具帶中選擇 鍵來啟動

在指令視窗鍵入 helpdesk 或是 helpwin

(53)

線上查詢的指令

MATLAB 線上求助指令

lookfor 指令跟 help 指令不太相同。

help 函式名: 尋找完全符合特定名稱的函式。

doc 函式名: 開啟該函式的說明文件視窗。

lookfor 關鍵字: 尋找註解標頭包含該關鍵字的函式。

(54)

利用 help 指令來查詢 sqrt() 的用法:

(55)

利用 doc 指令來查詢 sqrt() 的用法:

(56)

利用 lookfor 指令搜尋包含關鍵字Schur的函式:

>>

lookfor

Schur

ordschur

- Reorder eigenvalues in Schur factorization.

schur

- Schur decomposition.

schord

- Ordered schur decomposition.

... ...

... ...

schbal

- Schur balanced truncation (stable plant).

schmr

- Schur balanced truncation (unstable plant).

vschur

- function [u,t] = vschur(mat).

bdschur

- Block-diagonal Schur factorization.

>>

(57)

利用 lookfor 指令搜尋包含關鍵字Schur的函式:

>>

lookfor

Schur

ordschur

- Reorder eigenvalues in Schur factorization.

schur

- Schur decomposition.

schord

- Ordered schur decomposition.

... ...

... ...

schbal

- Schur balanced truncation (stable plant).

schmr

- Schur balanced truncation (unstable plant).

vschur

- function [u,t] = vschur(mat).

bdschur

- Block-diagonal Schur factorization.

>>

(58)

MATLAB 搜尋路徑

如果在命令提示列裡鍵入一個名稱,MATLAB 會使用下列方式 來尋找這個名稱的位置:

1 這個名稱是否為一個變數?

如果是,MATLAB 將會顯示這個變數目前的內容。

2 這個名稱是否為存在於現行資料夾裡的 M 檔案? 如果是,MATLAB 將會執行這個函式或指令。

3 這個名稱是否為存在於搜尋路徑中的 M 檔案? 如果是,MATLAB 將會執行這個函式或指令。

(59)

MATLAB 搜尋路徑

如果在命令提示列裡鍵入一個名稱,MATLAB 會使用下列方式 來尋找這個名稱的位置:

1 這個名稱是否為一個變數?

如果是,MATLAB 將會顯示這個變數目前的內容。

2 這個名稱是否為存在於現行資料夾裡的 M 檔案?

如果是,MATLAB 將會執行這個函式或指令。

3 這個名稱是否為存在於搜尋路徑中的 M 檔案? 如果是,MATLAB 將會執行這個函式或指令。

(60)

MATLAB 搜尋路徑

如果在命令提示列裡鍵入一個名稱,MATLAB 會使用下列方式 來尋找這個名稱的位置:

1 這個名稱是否為一個變數?

如果是,MATLAB 將會顯示這個變數目前的內容。

2 這個名稱是否為存在於現行資料夾裡的 M 檔案?

如果是,MATLAB 將會執行這個函式或指令。

3 這個名稱是否為存在於搜尋路徑中的 M 檔案?

如果是,MATLAB 將會執行這個函式或指令。

(61)

一些注意事項

Remark

如果定義一個與 MATLAB 函式或指令相同名稱的變數,則該函 式或指令會變成不能使用!

(62)

一些注意事項

Remark

如果定義一個與 MATLAB 函式或指令相同名稱的變數,則該函 式或指令會變成不能使用!

(63)

Lecture 4 把 MATLAB 當作

簡易型計算機使用

(64)

MATLAB 的純量運算

MATLAB 可當作一台簡易型計算機來執行數學運算。

利用 +、–、

∗、/ 及b符號分別代表加減乘除及次方運算。

運算 數學式 宣告式

加法

a + b

a + b

減法

a − b

a

− b

乘法

a × b

a

∗ b

除法

a ÷ b

a/b 次方

a b

abb

MATLAB 預設變數 ans 的值可以用在後續的計算,但要小 心使用!因為每次一個沒有等號的宣告式被執行時,ans 的 值將會被覆寫。

(65)

MATLAB 的純量運算

MATLAB 可當作一台簡易型計算機來執行數學運算。

利用 +、–、

∗、/ 及b符號分別代表加減乘除及次方運算。

運算 數學式 宣告式

加法

a + b

a + b

減法

a − b

a

− b

乘法

a × b

a

∗ b

除法

a ÷ b

a/b 次方

a b

abb

MATLAB 預設變數 ans 的值可以用在後續的計算,但要小 心使用!因為每次一個沒有等號的宣告式被執行時,ans 的 值將會被覆寫。

(66)

MATLAB 的純量運算

MATLAB 可當作一台簡易型計算機來執行數學運算。

利用 +、–、

∗、/ 及b符號分別代表加減乘除及次方運算。

運算 數學式 宣告式

加法

a + b

a + b

減法

a − b

a

− b

乘法

a × b

a

∗ b

除法

a ÷ b

a/b 次方

a b

abb

MATLAB 預設變數 ans 的值可以用在後續的計算,但要小 心使用!因為每次一個沒有等號的宣告式被執行時,ans 的 值將會被覆寫。

(67)

一個簡單的算例

假設圓柱的半徑是 0.1 公尺,且長度是 0.5 公尺。如何利用 MATLAB 宣告式來計算圓柱的體積?

>>

A = pi

∗ 0.1b2

A =

0.0314

>>

V = A

∗ 0.5

V =

0.0157

(68)

一個簡單的算例

假設圓柱的半徑是 0.1 公尺,且長度是 0.5 公尺。如何利用 MATLAB 宣告式來計算圓柱的體積?

>>

A = pi

∗ 0.1b2

A =

0.0314

>>

V = A

∗ 0.5

V =

0.0157

(69)

Thank you for your attention!

參考文獻

相關文件

• Performance: vectorized code often runs much faster than the corresponding code containing loops.. Zheng-Liang

Appearance: Vectorized mathematical code appears more like the mathematical expressions found in textbooks, making the code easier to understand.. Less error prone: Without

Sometimes called integer linear programming (ILP), in which the objective function and the constraints (other than the integer constraints) are linear.. Note that integer programming

All variables defined as the result of entering statements in the command window, exist in the Matlab workspace. At the beginning of a Matlab session, the workspace

此行文字的特別意義,是讓 MATLAB 藉由 lookfor 指令 搜尋並顯示此函式用途。.. 語法:

print –dtiff my_image.tif: 將目前指定的圖形,產生 TIFF 格式的影像檔,並以my_image.tif 的檔名儲存。.

 MATLAB 程式使用 pass-by-value 的方 式,進行程式與函式間的溝通聯絡,當 程式呼叫函式時, MATLAB

In this study, we compute the band structures for three types of photonic structures. The first one is a modified simple cubic lattice consisting of dielectric spheres on the