Transcript Matlab

Introduction to
MATLAB
Introduction
 由MathWorks公司於1984年推出的數學軟體。
 名稱是由「矩陣實驗室」﹙MATrix
LABoratory)所合成。
 MATLAB為各種動態系統模擬、數位訊號處
理、科學計算、科學目視等領域的標準程式
語言。
MATLAB外觀探討
 Command Window: 可在此輸入MATLAB的
指令
MATLAB外觀探討
 Workspace: 是MATLAB用來儲存變數的空
間, 在Command Window所指定的變數都會
被儲存到Workspace裡
MATLAB外觀探討
 Command History: 記錄著之前輸入過的指
令
基本運算
 一般數學符號運算
 在MATLAB 命令視窗(Command Window)內
的提示符號(>>)之後輸入運算式,並按入
Enter 鍵即可。
沒有特別將計算結果
設定(assign)成某一變
數的值MATLAB會自
動將結果存放成ans
 MATLAB可認得加(+), 減(-), 乘(*), 除(/), 次方(^)
的數學運算符號
基本運算
 一般數學符號運算
 若不想讓 MATLAB 每次都顯示運算結果,只需
在運算式最後加上分號(;)即可
 MATLAB會將%當成程式的注解
變數(Variable)
 MATLAB對使用變數名稱的規定
 變數名稱的英文大小寫是有區別
 變數名稱最多含31個字元,如果超過31個字元,
則後面的字元會被忽略
 變數名稱的第一個字必須是一個英文字母,隨
後可以摻雜英文字、數字或是底線(_)
 變數名稱不可包含標點符號
內建變數
意義
ans
預設的計算結果的變數名稱
pi
內建的pi值
i, j
1
矩陣運算
 在影像處理等方面, 常會用到矩陣的運算, 而
MATLAB提供很多矩陣的運算
 矩陣的運算會在線性代數深入探討
矩陣運算
 MATLAB 中的變數還可用來儲存矩陣
(Matrix),以進行各種運算
一維矩陣
二維矩陣
數字之間用
空白隔開
 亦可用zeros()來給定矩陣的大小, 預設裡面
的元素皆為0
 zeros(1,6): 定義一個1x6的0矩陣
矩陣的各種處理
 可針對矩陣作修改
常用的函數
 在數學計算中,除了基本的加減乘除運算外,
我們還會用到許多函數
函數
功能
abs(x)
對x取絕對值
rem(x,y)
求出x/y的餘數, ex:rem(10,3)=1
log(x)
ln(x) (以e為底的log函數)
exp(x)
求出ex
sqrt(x)
x
sin(x), cos(x),tan(x) 三角函數
常用的函數
 這些函數也適用在矩陣變數
矩陣常用的函數
 還有一些函數是為了矩陣設計





min(): 找出矩陣裡面的最小值
max(): 找出矩陣裡面的最大值
mean() 計算矩陣裡面的元素平均值
sum(): 計算矩陣裡面的元素總和
sort(): 將矩陣裡面的元素由大到小排序
輔助性的MATLAB指令
 help: 用來查詢已知指令的用法
 lookfor: 用來尋找未知的指令
 clear: 用來刪除變數
 clear A: 刪除變數A
 clear all: 刪除Workspace裡所有變數
多項式函數
 可使用一維陣列來表示多項式
 Ex: a(x)=x3+2x2+3x+4 → a=[1 2 3 4] (係數由次
方高到次方低
b(x)=x3+4x2+9x+16 → b=[1 4 9 16]
 多項式加法: c(x)=a(x)+b(x)
• c=a+b
 多項式減法: c(x)=a(x)-b(x)
• c=a-b
 多項式乘法: c(x)=a(x)*b(x)
• c=conv(a,b)
 多項式除法: a( x)  c( x)  b( x)  r ( x)
• [c,r]=deconv(a,b)
多項式函數
 求多項式函數的根, 可使用roots函數
 假設我們要求x2+3x+2的根
• p=[ 1 3 2]
• roots(p)
 已知多項式的根, 欲展開多項式, 可使用poly
函數
 假設已知有兩個根, 分別為-2, 1
• r=[-2 1]
• p=poly(r)
M檔案
 若要一次執行大量的 MATLAB 指令,可將
這些指令存放於一個副檔名為 m 的檔案,
並在 MATLAB 指令提示號下鍵入此檔案的
主檔名即可
 效用就如同在命令視窗逐一輸入指令
 類似Linux上的script檔
 M檔案裡面除了MATLAB指令外, 亦有for,
while等常見的控制程式流程的語法
for迴圈之範例
 下列 for 迴圈會產生一個長度為 6 的調和數列(Harmonic Sequence):
x = zeros(1,6);
for i = 1:6
x(i) = 1/i;
end
x
x=
1.0000 0.5000
% 變數 x 是一個 1×6 大小的零矩陣
% 顯示 x
0.3333
代表i的值從1~6, 每次
loop會加1
0.500
0.2000
0.1667
While迴圈之範例
 先前產生調和數列的例子,亦可用 while 迴圈改寫如下:
 範例
x = zeros(1,6);
i = 1;
while i<=6
x(i) = 1/i;
i = i+1;
end
x
% 顯示 x
x=
1.0000 0.5000 0.3333
0.2500
0.2000
0.1667
switch之範例
和c語言的switch差別在於,
不需break
fprintf在MATLAB裡等於c語
言裡的printf, 用法相同
 範利
for month = 1:12
switch month
case {3,4,5}
season = 'Spring';
case {6,7,8}
season = 'Summer';
case {9,10,11}
season = 'Autumn';
case {12,1,2}
season = 'Winter';
end
fprintf('Month %d ===> %s.\n', month, season);
end
Month 1 ===> Winter.
.
.
.
.
.
.
Month 12 ===> Winter.
2D繪圖
 plot大概是最基本也是最常用的繪圖指令,
plot可以有許多不同的用法,最簡單的用法
如下
 plot(x座標, y座標)
 我們給x=[0 2 4 7 10 12]
y=[3 4 0 6 1 3]
plot(x,y)
基本的繪圖指令
 如果我們想將一個函數畫的很細緻, 勢必要
用很多點去描繪, 則必須計算很多x,y座標
 使用linspace函式, 在一個區域間等分取很
多點(預設是取100個點)
x = linspace(0, 2*pi);
100 個點
% 在 0 到 2π 間,等分取
y = sin(x);
% 計算 x 的正弦函數值
plot(x, y);
% 進行二維平面描點作圖
Plot基本繪圖
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
1
2
3
4
5
6
7
Plot基本繪圖
 一次畫出多條曲線
 將 x 及 y 座標依次送入plot 指令
x = linspace(0, 2*pi);
等分取 100 個點
% 在 0 到 2 間,
plot(x, sin(x), x, cos(x), x, sin(x)+cos(x)); % 進行
多條曲線描點作圖
Plot基本繪圖
cos(x)
sin(x)
sin(x)+cos(x)
 畫出多條曲
線時,會自動
輪換曲線顏色
1.5
1
0.5
0
-0.5
-1
-1.5
0
1
2
3
4
5
6
7
Plot基本繪圖
 只給定一個矩陣 y
 對矩陣 y 的每一個行(Column)作圖
y = peaks;
% 產生一個 49×49 的矩陣
plot(y);
% 對矩陣 y 的每一個行作圖
10
8
6
4
2
0
-2
-4
-6
-8
0
5
10
15
20
25
30
35
40
45
50
練習
寫一個M檔案, 將下列函式的x,y算出來, 並根據x,y的座標畫圖,
t的值介於1~10之間(t的間隔為1)
x  e 1
t
y  2 x  3x  5
3
Reference
 MATLAB程式設計與應用-張智星著