37
9 1 5 6 7 + 5 + 7 2 3 8 7 6 5 3 1 1 + + 4 4 1 1 3- 2+1=? MATLAB 基基基基基基 T.-M.Huang 1 MATLAB MATLAB 基基基基基基 基基基基基基 基基基 基基基 基基基基基基基基基基基 基基基基基基基基基基基 [email protected] http://math.ntnu.edu.tw/~m in

MATLAB 基本功能介紹

Embed Size (px)

DESCRIPTION

MATLAB 基本功能介紹. 黃聰明 國立臺灣師範大學數學系 [email protected] http://math.ntnu.edu.tw/~min. 變數. double. char. 變數名稱. 常用變數型態. 內定 i 和 j 代表虛數. 2-1 變數和陣列. 使用者設定名稱的陣列,在實體上是由一塊記憶體區域所組成。. 大小寫字母有別. 不可超過 63 個字元. 第一個字必須是文字,其後可用文字、數字及底線任意組合 。. 佔 64 位元. 擁有 15 到 16 個有效位數. 可處理實數、虛數和複數. - PowerPoint PPT Presentation

Citation preview

Page 1: MATLAB  基本功能介紹

9911

55

6677

+

55

+

77

22 3388 77

66

55331111 ++4444

11

11

3-2+1=?

MATLAB 基本功能介紹 T.-M.Huang 1

MATLAB MATLAB 基本功能介紹基本功能介紹

黃聰明黃聰明 國立臺灣師範大學數學系國立臺灣師範大學數學系

[email protected] http://math.ntnu.edu.tw/~min

Page 2: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11

MATLAB 基本功能介紹 T.-M.Huang 2

2-1 2-1 變數和陣列變數和陣列變數變數 變數名稱 常用變數型態

使用者設定名稱的陣

列,在實體上是由一

塊記憶體區域所組成。

第一個字必須是文字,其後

可用文字、數字及底線任意

組合。

不可超過63

個字元

大小寫字母有別

double

char

擁有 15 到 16個有效位數可處理實數、虛數和複數

Var = 10 + 10i ;

佔 64位元

內定 i 和 j 代表虛數

1

Page 3: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11

MATLAB 基本功能介紹 T.-M.Huang 3

2-2 MATLAB 2-2 MATLAB 變數的初始化變數的初始化三種用來初始化變數的方式

利用宣告的方式,指定資料給變數

從鍵盤輸入資料給變數 從檔案讀取資料

var = expression

var = 40i;var2 = var/5;array = [ 1 2 3 4 ];x = 1; y = 2;

Page 4: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11特殊符號(特殊符號( II ))

• 分號(;)

• 冒號(:)

• 轉置 transpose( ’)

MATLAB 基本功能介紹 T.-M.Huang 4

first: incr:last

Page 5: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11特殊符號(特殊符號( IIII ))

•百分比符號(%)

MATLAB 基本功能介紹 T.-M.Huang 5

程式中加入註解程式中加入註解 ( CommentsComments)程式中加入註解程式中加入註解 ( CommentsComments)

>> y = (5*2+3.5)/5; % 將運算結果儲存在變數 y ,但不用顯示於螢幕 >> z = y^2 % 將運算結果儲存在變數 z ,並顯示於螢幕 z = 7.2900

Page 6: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11特殊用途矩陣特殊用途矩陣

MATLAB 基本功能介紹 T.-M.Huang 6

指令 說明zeros(m, n) 產生維度為 m×n ,構成元素全為 0 的矩陣

ones(m, n) 產生維度為 m×n ,構成元素全為 1 的矩陣

eye(n)產生維度為 n×n ,對角線的各元素全為 1 ,其他各元素全為 0 的單位

矩陣

pascal(m, n) 產生維度為 m×n 的 Pascal 矩陣

vander(m, n) 產生維度為 m×n 的 Vandermonde 矩陣

hilb(n) 產生維度為 n×n 的 Hilbert 矩陣

rand(m, n) 產生 [0, 1] 均勻分佈的亂數矩陣,其維度為 m×n

randn(m, n) 產生 µ = 0, σ= 1 的正規分佈亂數矩陣,其維度為 m×n

magic(n) 產生維度為 n×n 的魔方陣,其各個直行、橫列及兩對角線的元素和都相等

Page 7: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11從鍵盤輸入初始化變數從鍵盤輸入初始化變數

•浮點數資料

•字元字串型態

MATLAB 基本功能介紹 T.-M.Huang 7

30

T.M. Huang

T.M. Huang

Page 8: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

112-3 2-3 多維陣列與子陣列多維陣列與子陣列

•在 MATLAB 的資料型態中,向量可視為一維陣列,矩陣可視二維陣列,對於維度 (Dimensions)超過 1 的陣列則均可視為「多維陣列」(Multidimesional Arrays,簡稱 N-D Arrays)。

MATLAB 基本功能介紹 T.-M.Huang 8

Page 9: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11二維陣列(二維陣列( II ))

• 二維陣列又簡稱矩陣,具有兩個維度( Dimensions) 「橫列」 (Row) 「直行」 (Column)

MATLAB 基本功能介紹 T.-M.Huang 9

( 1,1) ( 1,2) ( 1,3) ( 1,4)( 2,1) ( 2,2) ( 2,3) ( 2,4)( 3,1) ( 3,2) ( 3,3,) ( 3,4)

橫列

直行

Page 10: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11二維陣列(二維陣列( IIII ))

•二維陣列,可對應至一個 X - Y 二維平面座標,圖示如下:

MATLAB 基本功能介紹 T.-M.Huang 10

Y(行)

X( 列

)

Page 11: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11矩陣的索引或下標 (矩陣的索引或下標 ( II ))

MATLAB 基本功能介紹 T.-M.Huang 11

A ( i , j )

第 i 橫列、第 j 直行的元素

i 與 j 即是此元素的下標( Subscript)或索引( Index)

所有矩陣的內部表示法都是以直行為主的一維向量

A ( i,j)和 A ( i+(j-1)*m)是完全一樣的。★ m 為矩陣 A 的列數

可以使用一維或二維下標來存取矩陣

Page 12: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11矩陣的索引或下標 (矩陣的索引或下標 ( IIII ))

MATLAB 基本功能介紹 T.-M.Huang 12

41

106

111

616 2

21

82

27

912

417 7

22

73

58

713

118 5

23

04

39

414

519 4

24

235

1310

1315

020 3

25

AA==

A(2,3) A(12)

A(4:5,2:3) A([ 9 14; 10 15 ])

A(1:5,5) A(:,5)A(21;25)

A(1:5,end) A(:,end)A(21;end)

Page 13: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11三維陣列(三維陣列( II ))

•將兩個二維陣列疊在一起,就形成第三個維度,此第三個維度稱為「頁」 (Page),圖示如下:

MATLAB 基本功能介紹 T.-M.Huang 13

(1,1) (1,2) (1,3) (1,4)

(2,1) (2,2) (2,3) (2,4)

(3,1) (3,2) (3,3) (3,4)

列(1,1) (1,2) (1,3) (1,4)

(2,1) (2,2) (2,3) (2,4)

(3,1) (3,2) (3,3) (3,4)

Page 14: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11三維陣列(三維陣列( IIII ))

•三維陣列,可對應至一個 X - Y - Z 三維立體座標,圖示如下:

MATLAB 基本功能介紹 T.-M.Huang 14

Z( 頁)

Y( 行)X( 列 )

Page 15: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11三維陣列(三維陣列( IIIIII ))

• 三維陣列定址,可以 ( 列 , 行 , 頁 ) 定之。• 以維度為 3×4×2 的三維陣列為例,其定址方式可

圖示如下:

陣列 A 是三維陣列,其中 A( : , : ,1)代表第一頁的二維陣列, A( : , : ,2)代表第二頁的二維陣列。

MATLAB 基本功能介紹 T.-M.Huang 15

Page 16: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

112-5 2-5 特殊的數值特殊的數值

MATLAB 基本功能介紹 T.-M.Huang 16

函式 目的pipi 代表 到 15位有效數字的值

i , ji , j 代表 的值infinf 代表無窮大,通常是除以 0 的結果

NanNan` 不是數字’,是由未定義的數學運算而來

epseps 電腦上兩個數字間的最小差異ansans 用來儲存一個敘述式的結果

1

Page 17: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

112-6 顯示輸出資料

MATLAB 基本功能介紹 T.-M.Huang 17

指令格式 結 果 舉 例format shortformat short 顯示 4 位小數 ( 預設

值 )12.3457

format longformat long 顯示 14位小數 12.345678901234567

format short format short ee

顯示 5 個數字加冪次方 1.2346e+001

format short format short gg

總共顯示 5 個數字 ( 可加或不加冪次方 )

12.346

format long format long ee

顯示 15位小數字加冪次方

1.234567890123457e+001

format long format long gg

總共顯示 15個數字( 可加或不加冪次方 )

12.3456789012346

format hexformat hex 16位元進位格式 4028b0fcd32f707a

Page 18: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11dispdisp

MATLAB 基本功能介紹 T.-M.Huang 18

num2str

轉換數字成字串

int2str

轉換整數成字串

>> str = [‘ The value of pi = ’ , num2str(pi)] ;>> disp(str) ;The value of pi = 3.1416

>> FileName1 = 'rslt_w';

>> FileName = strcat(FileName1, int2str(10))

FileName =

rslt_w10

Page 19: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11fprintffprintf 格式化輸出格式化輸出

MATLAB 基本功能介紹 T.-M.Huang 19

fprintf(format, data)fprintf(format, data) 一個或多個陣列變數

字串:描述輸出資料的方式

Page 20: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11Example/conv_rate/conv_ratio.m

MATLAB 基本功能介紹 T.-M.Huang 20

格式字串 說 明

%d 以指數格式顯示數值

%e 以指數格式顯示數值

%f 以浮點數格式顯示數值

%g以浮點數或指數格式顯示數值,由何者較短為優先顯示

\n 跳到新的一行

Page 21: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

112-7 2-7 資料檔案資料檔案

MATLAB 基本功能介紹 T.-M.Huang 21

save

把工作區的資料存進一個磁碟檔案中

save filename var1 var2 var3save filename var1 var2 var3

load filenameload filename

檔案延伸檔名為“ .mat.mat”

load

把磁碟檔案中的資料存進工作區

Page 22: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

112-8 2-8 純量與陣列運算純量與陣列運算

MATLAB 基本功能介紹 T.-M.Huang 22

variable_name = expression; variable_name = expression;

計算等號右邊敘述式的結果並將其儲存於左邊變數內

ii=ii+1 ;

運算方法 MATLAB 形式加法加法 a + b

減法減法 a - b

乘法乘法 a * b

除法除法 a / b

冪次方冪次方 a^b

Page 23: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11陣列與矩陣運算陣列與矩陣運算

•矩陣的加減與一般純量( Scalar )的加減類似

•相加或相減的矩陣必需具有相同的維度

•矩陣與純量可以直接進行加減, MATLAB 會直接將加減應用到每一個元素

MATLAB 基本功能介紹 T.-M.Huang 23

>> A = [12 34 56 20];

>> B = [1 3 2 4];

>> C = A + B

C =

13 37 58 24>> A = [1 2 3 2 1] + 5

A =

6 7 8 7 6

Page 24: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11矩陣的乘法與除法矩陣的乘法與除法

• 純量對矩陣的乘或除,可比照一般寫法

• 欲進行矩陣相乘,必需確認第一個矩陣的直行數目( Column Dimension ) 必須等於第二個矩陣的橫列數目( Row Dimension )

•矩陣的除法,常藉由反矩陣或解線性方程式來達成

MATLAB 基本功能介紹 T.-M.Huang 24

>> A = [123 , 442]; >> C = A/3

>> B = 2*A C =

B = 41.0000 147.3333

246 884

>> A = [1; 2];

>> B = [3, 4, 5];

>> C = A * B

C =

3 4 5

6 8 10

Page 25: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11矩陣的左、右除法矩陣的左、右除法

• A\b :矩陣除法由 inv(A)*b 來定義,其中inv(A) 為 A 的反矩陣

• a\B :矩陣除法由 a*inv(B) 來定義

MATLAB 基本功能介紹 T.-M.Huang 25

>> A = magic(3)

A =

8 1 6

3 5 7

4 9 2

>> b = [1; 2; 3];

>> x = A \ b

x =

0.0500

0.3000

0.0500

>> e = A * x - b

e =

1.0e-015 *

0

0

-0.4441

>> y = b' / A

y =

-0.0333 0.4667 -0.0333

>> f = y * A - b'

f =

1.0e-015 *

0 0.4441 0

Page 26: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11矩陣的次方運算矩陣的次方運算

•矩陣的次方運算,可由「 ^ 」來達成,但矩陣必需是方陣,其次方運算才有意義

•在「 * 」,「 / 」及「 ^ 」之前加上一個句點, MATLAB 將會執行矩陣內「元素對元素」( Element-by-element ) 的運算

MATLAB 基本功能介紹 T.-M.Huang 26

>> A = magic(3);

>> B = A^2

B =

91 67 67

67 91 67

67 67 91 >> A = [12; 45];

>> B = [2; 3];

>> C = A.*B

C =

24

135

>> D = A./B

D =

6

15

>> E = A.^2

E =

144

2025

>> C = A. * B

??? C = A. * B

|

Error: Unexpected MATLAB operator.

* 前後不能有任何空格 * 前後不能有任何空格

Page 27: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11轉置和「共軛轉置」矩陣轉置和「共軛轉置」矩陣

•複數矩陣 z ,其「共軛轉置」矩陣 ( Conjugate Transpose) 可表示成 矩陣 z′

•想得到任何矩陣 z 的轉置( Transpose),則可表示成矩陣 z.′

•若 z 為實數,則 z′和 z.′的結果是一 樣的

MATLAB 基本功能介紹 T.-M.Huang 27

Page 28: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

112-11 2-11 繪圖功能簡介繪圖功能簡介

MATLAB 基本功能介紹 T.-M.Huang 28

x = 0:0.1:10;y = x.^2–10.*x+15;plot(x,y);

xlabel('x');

ylabel('y');

title('Plot of y = x.^2-10.*x+15')

grid on;

grid off;

Page 29: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11圖形化影像輸出(圖形化影像輸出( II ))

MATLAB 基本功能介紹 T.-M.Huang 29

print <options> <filename>print <options> <filename>

x = 0:0.1:10;

y = x.^2–10.*x+15;

plot(x,y);

print –djpeg fig_ch2.jpeg

產生一個 jpeg 圖形,檔案名稱 fig_ch2.jpeg

option 功能敘述

-deps-deps 產生一個灰階的 eps 圖形

-depsc-depsc 產生一個彩色的 eps 圖形

-dpng-dpng 產生一個 png 圖形

-dtiff-dtiff 產生一個壓縮的 tiff 圖形

Page 30: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11圖形化影像輸出(圖形化影像輸出( IIII ))

MATLAB 基本功能介紹 T.-M.Huang 30

Page 31: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11圖形化影像輸出(圖形化影像輸出( IIII ))

MATLAB 基本功能介紹 T.-M.Huang 31

Page 32: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11圖形化影像輸出(圖形化影像輸出( IIII ))

MATLAB 基本功能介紹 T.-M.Huang 32

Page 33: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11圖形化影像輸出(圖形化影像輸出( IIII ))

MATLAB 基本功能介紹 T.-M.Huang 33

Page 34: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11多重線條繪圖多重線條繪圖

MATLAB 基本功能介紹 T.-M.Huang 34

x = 0:pi/100:2*pi;y1 = sin(2*x);y2 = 2*cos(2*x);plot( x, y1, x, y2 );

plot(x, y1);

hold on;

plot(x, y2);

hold off

Page 35: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11線條顏色、形式、線條顏色、形式、

資料標記及說明文字(資料標記及說明文字( II ))

MATLAB 基本功能介紹 T.-M.Huang 35

plot(x, y1);

hold on;

plot(x, y2);

hold off

plot(x, y1,'ro-.' );

hold on;

plot(x, y2,'gx:');

hold off

Page 36: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11線條顏色、形式、線條顏色、形式、

資料標記及說明文字(資料標記及說明文字( II ))

MATLAB 基本功能介紹 T.-M.Huang 36

legend('sin(2x)','2cos(2x)','Location','NorthWest');

text(3.3, 1.5, ‘2cos(2x)')

text(1.5, 0.5, 'sin(2x)')

Page 37: MATLAB  基本功能介紹

55

77

22 3388 77

66

55

331111 ++4444

11

11線條顏色、形式、線條顏色、形式、

資料標記及說明文字(資料標記及說明文字( IIII ))

MATLAB 基本功能介紹 T.-M.Huang 37

x = 0:pi/100:2*pi;

y1 = sin(2*x);

y2 = 2*cos(2*x);

plot(x, y1,'ro-.' );

hold on;

plot(x, y2,'gx:');

hold off

legend('sin(2x)','2cos(2x)','Location','NorthWest');

text(1.5, 0.5, 'sin(2x)')

text(3.3, 1.5, '2cos(2x)')

set(gca,'xtick',[0 1/2*pi pi 3/2*pi 2*pi])

set(gca,'xticklabel',{'0','1/2 pi','pi','3/2 pi','2 pi'})