460 likes | 830 Views
Matlab 教學. Speaker : 林昱志 Date : 2012/10/18. Outline. MATLAB 簡介 算術邏輯運算 Matlab 陣列 Matlab 矩陣. MATLAB 簡介. 由 MathWorks 公司於 1984 年推出的數學軟體。 名稱是由「矩陣實驗室」 (MATrix LABoratory) 所合成。 Matlab 為各種動態系統模擬、數位訊號處理、科學計算、科學目視等領域的標準程式語言。 Matlab 是一個計算核心,圍繞著這個計算核心,有許多針對不同應用所開發的應用程式,稱為工具箱 (Toolboxes) 。.
E N D
Matlab教學 Speaker:林昱志 Date:2012/10/18
Outline • MATLAB簡介 • 算術邏輯運算 • Matlab陣列 • Matlab矩陣
MATLAB簡介 • 由MathWorks公司於1984年推出的數學軟體。 • 名稱是由「矩陣實驗室」(MATrix LABoratory)所合成。 • Matlab為各種動態系統模擬、數位訊號處理、科學計算、科學目視等領域的標準程式語言。 • Matlab是一個計算核心,圍繞著這個計算核心,有許多針對不同應用所開發的應用程式,稱為工具箱(Toolboxes)。
MATLAB外觀 現階段的目錄(Current Folder) 工作空間變數列表 (Workspace Window) 指令視窗 (Command Window) 指令歷史列表 (Command History) 詳細資訊 (Details)
MATLAB外觀 現在工作目錄 (Current Directory) 新的M檔案 (New M-file) Command Window: 開啟或關閉「指令視窗」 Command History: 開啟或關閉「指令歷史列」 Current Folder : 開啟或關閉「MATLAB 瀏覽器」 Workspace Browser: 開啟或關閉「工作空間瀏覽器」 Product Help : 開啟或關閉「線上支援瀏覽器」 Function Brower: 開啟或關閉「函數瀏覽器」
Getting Help • Menu Help > Product Help to openthe Help Browser • Ctrl+F1 for the Function Hint • F1 to get the Help on Selection • Shift+F1 for the Function Browser
算術邏輯運算 • 一般數學符號運算 • 在Matlab命令視窗(Command Window)內的提示符號(>>)之後輸入運算式,並按入 Enter 鍵即可。例如: • >> (5*2+3.5)/5 • ans =2.7000 • 若不想讓Matlab每次都顯示運算結果,只需在運算式最後加上分號(;)即可,例如: • >> (5*2+3.5)/5;
算術邏輯運算 • 算術運算
算術邏輯運算 • 優先順序
隨堂演練 • 使用Matlab進行下列算式的運算。
變數設定與命名規則 • 把計算的結果設定給一個變數(variable),以方便後續之使用。(ex: var1 = 12/64 ;) • 第一個字母必需是英文字母,字母間不可留空格。 • 最多只能有31個字母,Matlab會忽略多餘字母。 • Matlab在使用變數時,不需預先經過變數宣告(VariableDeclaration)的程序,而且所有數值變數均以預設的double資料型式儲存。
Example • >> a = 1; • >> b = 2; • >> A = [a b; 3 4] • >> class(A) • >> size(A)
Workspace Window • Workspace Window之變數 變數名稱 陣列大小 變數類型
Matlab所提供之資料型態 • Matlab所提供之資料型態
運算子 • Matlab中「=」運算子和數學中等號的意義是不同的。 • 符號「=」在Matlab中叫做指派(assignment)或者取代(replacement)。 • 當鍵入x=3時,即是告訴Matlab將3指派給變數x。 • 當鍵入x=x+2時,這告訴Matlab在目前的x的值再加上2以取代目前x的值,此時新的x值為5。 • 在左手邊(left-hand)的變數將會被右手邊(right-hand)所產生的新值取代掉。 • 依照以上的限制式,6=x或x+18=20是不被允許的。
變數的設定與命名規則 • Matlab定義了一些常數,以方便輸入特定的數值,這些常數稱為永久常數(permanent constant)。
隨堂演練 • 高度h及半徑r的圓柱體體積為V=πr2h。 • 一個特殊的圓柱型水槽高度為15m且半徑為8m,現在我們要建造另一個容量多20%,但高度維持一樣的水槽,請問半徑要多少? r = ? m r = 8 m V : 20% up h = 15 m h = 15 m
隨堂演練 • 高度h及半徑r的圓柱體體積為V=πr2h。 • 一個特殊的圓柱型水槽高度為15m且半徑為8m,現在我們要建造另一個容量多20%,但高度維持一樣的水槽,請問半徑要多少? r = ? m r = 8 m V : 20% up h = 15 m h = 15 m r = 8 ; 指派半徑及高度給r及h h = 15 ; 優先權注意,同:V=pi*(r^2)*h; V=pi*r^2*h; 舊的體積V被新的體積V取代 V=V +0.2*V; r = (V/(pi*h))^0.5
一些常用的數學函數 • 常用的數學函數
輔助函數 • Matlab之輔助函數 lookfor mean → help mean doc mean → 想要找到一個求平均值的函數 使用方法的查詢 更詳盡的使用方法
Matlab陣列 • 要熟悉Matlab的語法,首先必須先學習如何操作陣列裡的元素。 • 定義 • 純量:單一數值。 • Scalar=4; • 向量:一維之陣列,包含行向列以及列向量。 • Cvector= [4;5;6] ; • Rvector = [7,8,9] ; • 矩陣:二維之陣列,陣列中最常使用到之形式。 • Matrix = [5 6 ; 7 8] ; • 多維陣列:對於維度(Dimensions)超過1的陣列稱之。 • 陣列包含上敘之純量、向量以及矩陣。
Vector Vector(i) 4 1 5 2 6 3 Rvector Rvector(i) 7 8 9 1 2 3 Example • >> Rector1 = [7,8,9] • >> Rector2 = [7 8 9] • >> Rector1(1) • >> Rector2(2) • >> Vector1 = [4;5;6] • >> Vector1(3)
Rector1 Vector2 Rector3 Vector1 7 4 8 4 5 6 7 8 9 5 9 6 共軛轉置與轉置 • 共軛轉置:『’』 • >> Rector3 = Rector1’ • 轉置:『.’』 • >> Vector2 = Rector1.’
向量相關指令函數 • 建立向量之指令函數 • >> Vector1 = 1:4 • >> Vector2 = uint8(1:4) • >> Vector3 = [1:0.5:4] • >> Vector4 = linspace(1,5,10)
向量相關指令函數 • 查詢陣列相關資訊函數 • >> size(Vector3) • >> length(Vector3) • >> ndims(Vector3) • >> numel(Vector3)
向量相關指令函數 • 基本向量處理函數
隨堂演練 • 建立一列向量X,其元素由0到10,間距為0.5,並將向量裡的元素由大到小排列、計算其總和(sum)、維度(size)以及元素個數(numel)。
隨堂演練 • 建立一列向量X,其元素由0到10,間距為0.5,並將向量裡的元素由大到小排列、計算其總和(sum)、維度(size)以及元素個數(numel)。 • >>x = 0:0.5:10 ; • >>sum(x) ; • >>size(x) ; • >>numel(x) ; • >>sort(x,’descend’);
Matrix Matrix(i) 5 6 1 3 7 8 2 4 Matrix(i,j) Matrix j 5 6 (1,1) (1,2) i 7 8 (2,1) (2,2) Matlab矩陣 • Matrix1 = [5 6 ; 7 8] • Matrix1(3) • 按照列以及行之順序。 • A(i,j)=A(列之順序,行之順序) • Matrix1(2,1)
Matlab矩陣 • A= [1:1:4; 5:2:11; 12:3:21] • 冒號(:) • 代表一整列或一整行 • A(:,3) (取出矩陣 A 的第三個直行) • end • 這個保留字來代表某一維度的最大值 • A(end,end) (矩陣 A 的右下角元素) • A(:,end) (矩陣 A 的最後一個直行)
Matlab矩陣 • A= [1:1:4; 5:2:11; 12:3:21] • 可以直接刪除矩陣的某一整個橫列或直行 • A(2,:) = [] (刪除A矩陣的第二列) • A(:,[2 3]) = [] (刪除 A 矩陣的第二、三直行) • 可以取代矩陣的某一整個橫列或直行 • A(2,:) = [0] (取代A矩陣的第二列) • A(:,[2 3]) = [1] (取代A 矩陣的第二、三直行)
Matlab矩陣 • 產生各種特殊用途矩陣之指令 :
隨堂演練 • 產生維度為3×3的魔方陣,計算其做最大值(max),以及最小值(min)。
隨堂演練 • 產生維度為3×3的魔方陣,計算其做最大值(max),以及最小值(min)。 • Matlab函數運算時,會對行向量先進行運算。 max max 8 9 7 9 8 1 6 Matrix = magic(3) 3 5 7 4 9 2 min min 3 1 2 1
Matlab矩陣運算 • 函數max以及min當有兩個接收變數時可以知道最大元素所在之index,用法如下: • [ max_val , max_index ] = max(x) • [ min_val , min_index ] = min(x)
Example • 利用函式max或是min找出magic(3)中最大元素之二維索引。 • [max_val1, index] = max( Matrix ) ; Matrix = magic( 3 ) ; 8 1 6 3 5 7 4 9 2 max index max_val1 8 9 7 1 3 2
Example • 利用函式max或是min找出magic(3)中最大元素之二維索引。 • [max_val , c_index] = max( max_val1 ) ; • r_index= index( c_index ) ; • Max = Matrix( r_index , c_index) index max_val1 8 9 7 1 3 2 max index(c_index) max_val c_index r_index 9 2 3
Matlab矩陣運算 • 矩陣的數學運算
Matlab矩陣運算 • 陣列的點運算
Example • >>A = 1:3, B = 4:6 • >> A + B, A - B, A + 1, B - 2 • >> A' * B, A * B', A * 2, A * B • >> A .* B, A' .* B', A .* 2, A' .* B • >> A ./ B, A' ./ B', A ./ 2, A / 2 • >> A .^ B, (A') .^ (B'), A .^ 2, 2 .^ B • >>A = 5, B = [1:3; 4:6; 7:9] • >> B <= A, B > 5,
二維陣列 • 二維陣列又簡稱矩陣,具有兩個維度 • 「橫列」(Row) • 「直行」(Column) j (Column) (1,1) (1,2) (1,3) (1,4) i (Row) (2,1) (2,2) (2,3) (2,4) (3,1) (3,2) (3,3) (3,4) (4,1) (4,2) (4,3) (4,4)
三維陣列 • 將兩個二維陣列疊在一起,就形成第三個維度,此第三個維度稱為「頁」(Page)。 (1,1,n) (1,2,n) (1,3,n) (1,4,n) k (page) (2,1,n) (2,2,n) (2,3,n) (2,4,n) (3,1,n) (3,2,n) (3,3,n) (3,4,n) j (Column) (4,1,n) (4,2,n) (4,3,n) (4,4,n) i (Row) (1,1,2) (1,2,2) (1,3,2) (1,4,2) (2,1,2) (2,2,2) (2,3,2) (2,4,2) (1,1,1) (1,2,1) (1,3,1) (1,4,1) (3,1,2) (3,2,2) (3,3,2) (3,4,2) (2,1,1) (2,2,1) (2,3,1) (2,4,1) (4,1,2) (4,2,2) (4,3,2) (4,4,2) (3,1,1) (3,2,1) (3,3,1) (3,4,1) (4,1,1) (4,2,1) (4,3,1) (4,4,1)
四維陣列 • 四維陣列的第四個維度可視為「箱」(Box),而每個箱是由一個三維陣列所組成,其定址方式為(列,行,頁,箱)。 • 一個 2×2×3×4 的四維陣列,可表示成4個箱,每個箱都由一個 2×2×3 的三維陣列所組成,圖示如下: A(:,:,:,1) A(:,:,:,2) A(:,:,:,3) A(:,:,:,4)