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