MATLAB 程式設計簡介 修改自張智星教授講義

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 程式計時 張智星 清大資工系.
MATLAB 程式設計 時間量測 清大資工系 多媒體資訊檢索實驗室.
MATLAB小结、 经典迭代法、CG.
Introduction to Matlab
Introduction to Matlab
Matlab教學 Speaker:林昱志 Date:2012/10/18.
1012 MATLAB 教學 彭奕翔 2013/02/27.
張智星 (Roger Jang) 台大資工系 多媒體檢索實驗室
数值计算的工具—MATLAB 电子计算机技术为应用数学解决实际问题创造了物质条件 。
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
MATLAB簡介 MATLAB程式設計《入門篇》
臺北市立大學 資訊科學系(含碩士班) 賴阿福
MATLAB介紹.
張智星 清大資工系 補充內容:方煒 台大生機系 小幅修改:吳俊仲 長庚機械系
張智星 清大資工系 補充內容:方煒 台大生機系
點狀圖 (Dot Plot).
范洪源 臺灣師範大學數學系 MATLAB 基本功能介紹 范洪源 臺灣師範大學數學系.
數學與電腦 的初相識 汪群超 個人網址: 變有不可者三,有不可不變者三: 能力未至不可變也、 學識未敷不得變也、 功侯未到不能變也。
第一讲 MATLAB简介 1.1 MATLAB与通信仿真 1.1.1 通信电路与系统仿真 1.1.2 MATLAB的发展史
Application of Matlab Language
張智星 清大資工系 多媒體檢索實驗室 第九章: 矩陣的處理與運算 張智星 清大資工系 多媒體檢索實驗室.
黃聰明 國立臺灣師範大學數學系 MATLAB 基本功能介紹 黃聰明 國立臺灣師範大學數學系
TTS (文字轉語音) Roger Jang (張智星)
張智星 (Roger Jang) 清大資工系 多媒體檢索實驗室
Chap3 Linked List 鏈結串列.
Introduction to MATLAB
授課教授:張寶基 助教:梁凱雯 郭千豪 音視訊處理實驗室 2014 / 9 / 30
§ 9.1常用数学软件简介及MATLAB基础知识
程式設計實習課(四) ----C 函數運用----
MATLAB 程式設計入門篇 初探MATLAB
第一單元 建立java 程式.
建立一 function s (type) 可以用來繪製cyclic-harmonic curves
分支宣告與程式設計 黃聰明 國立臺灣師範大學數學系
UpToDate Anywhere 設定方法
1.3 矩阵与数组 MATLAB中矩阵的生成 MATLAB矩阵操作 数组创建与运算.
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 線性代數 張智星 清大資工系.
数学建模 江西财经大学 数学与管理决策系 制作:华长生 华长生制作.
MATLAB 程式設計入門篇 二維平面繪圖 (part2)
15.3 極大與極小 附加例題 5 附加例題 6 © 文達出版 (香港 )有限公司.
本章學習目標 學習極座標繪圖與對數繪圖 學習雙y軸繪圖 學習向量場繪圖 學習統計繪圖 在Matlab的環境裡製作動畫
MATLAB 入门教程.
MATLAB 程式設計入門篇 初探MATLAB
張智星 清大資工系 多媒體檢索實驗室 Tree Net Construction 張智星 清大資工系.
第 2 章 陣列(Array)與矩陣(Matrix)的運算
MATLAB 程式設計入門篇 二維平面繪圖 改自張智星講義
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
張智星 (Roger Jang) 清大資工系 多媒體檢索實驗室
MATLAB 程式設計入門篇 三維立體繪圖 (part1)
三維繪圖 Helix t = 0:pi/50:10*pi; % linspace(0,10*pi,500); figure plot3(sin(t),cos(t),t) grid on axis square Remark: zlabel, view, surf.
实验教学 MATLAB在行列式和矩阵中的应用 授课教师:杨梦云.
GUI Title and GUI Status
MATLAB 程式設計入門篇 初探MATLAB
挑戰C++程式語言 ──第8章 進一步談字元與字串
GridView.
GridView操作 (II).
HelloPurr_Extend 靜宜大學資管系 楊子青
微積分 第二次上機 Matlab 教學 2007/10/30 陳逸嬿.
反矩陣與行列式 東海大學物理系‧數值分析.
函數應用(二)與自定函數.
陣列與結構.
從HTML表格到CSS 靜宜大學 資管系 楊子青.
Introduction to Matlab
Parasitics Extraction (PEX) 與 postsimulation(posim)
語音訊號的特徵向量 張智星 多媒體資訊檢索實驗室 清華大學 資訊工程系.
Test for R Data Processing & Graphics
第四組 停車場搜尋系統 第四組 溫允中 陳欣暉 蕭積遠 李雅俐.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

MATLAB 程式設計簡介 修改自張智星教授講義 jang@cs.nthu.edu.tw http://www.cs.nthu.edu.tw/~jang 清大資工系 多媒體資訊檢索實驗室

關於張智星教授 張智星 Roger Jang Ph.D. UC BerkeleyEECS (1992) The Math Works – Matlab (1993~1995) 清大資工教授(~2012/07)、台大資工教授

Matlab的基本運算 一般常數運算 若不想讓 MATLAB 每次都顯示運算結果,只需在運算式最後加上分號(;)即可,例如: 在MATLAB 命令視窗(Command Window)內的提示符號( >>)之後輸入運算式,並按 Enter 鍵。例如: >> 36 + 45 ans = 81 若不想讓 MATLAB 每次都顯示運算結果,只需在運算式最後加上分號(;)即可,例如: 6/2*(1+2); 算完的答案會儲存在「ans」變數

變數 變數名稱 範例: a = 1 %(←這是註解) 此時a為1 b = a+2 % 此時b值為3 可使用英文、數字、底線 第一個字母必需是英文字母 大小寫視為不同 最多只能有 63個字母  範例: a = 1 %(←這是註解) 此時a為1 b = a+2 % 此時b值為3

簡易工程計算 MATLAB 是一個科學計算軟體,因此可以支援很多常用到的數學函數 y = abs(x) % 取 x 的絕對值 y = sqrt(x) % 取 x 的開平方根 y = x^(1/2)也有同樣的效果 y = sin(x) % 取 x 的正弦值 y = exp(x) % 自然指數 exp(x) y = log(x) % 自然對數 ln(x) 以2或10為底的log有內建函數,其餘可用換底公式 MATLAB 也支援複數運算,通常以 i 或 j 代表單位虛數 輸入sqrt(-3)將得到: 0 + 1.7321i 尤拉公式:exp(i*pi)

線上支援 help:用來查詢已知指令的用法。 lookfor:用來尋找未知的指令。找到所需的指令後,即可用 help 進一步找出其用法。 doc:特定函數的線上支援。 ......Google!!

向量的建立-手動輸入 row vector column vector a = [1 4 2 6 7 9]

向量的建立-自動建立 如果要建立一個很大的向量怎麼辦? a=1:10; a=1:0.1:10 ; linspace(1, 10, 50) 自動建立一個[1, 2, 3, …, 10]的向量 預設的遞增是1 a=1:0.1:10 ; 自動建立一個[1, 1.1, 1.2 … 9.8, 9.9, 10]的向量 遞增為0.1(在1到10之間,每隔0.1建立一個點) linspace(1, 10, 50) 在1到10之間,建立50個點

向量的存取 取出向量元素,範例:t = [4 6 2 7 9] 修改向量元素,範例:t=[4 2 5 3 7] 輸入t(k)會存取向量t的第k個元素 輸入t(4)會存取向量t的第4個元素:7 輸入t(5)或t(end) 會存取向量t的最後一個元素:9 Question:輸入t(6)會? 修改向量元素,範例:t=[4 2 5 3 7] t(3) = 2 %將向量t的第三個元素更改為 2 t(6) = 1 %在向量t加入第六個元素,其值為1 t(3) = [] %將向量 t 的第三個元素刪除,[]代表空集合 Question:如何一次刪除多個元素? Question:輸入t(50)=50時,結果會如何?

向量的運算 若s=[3 4 2 6 1], t=[4 2 5 3 7] s + 5:將s的每個元素+5 t * 6:將t的每個元素*6 sqrt(s) :將s的每個元素開根號 s + t:兩個向量相加,長度相同時方可使用 s .* t:兩個向量,元素對元素相乘 s':轉置(transpose) Question:內積?

矩陣的建立 在每個row結尾加上分號(;),例如: 建立特殊矩陣 A = [1 2 3 4; 5 6 7 8; 9 10 11 12]; A = zeros(2,3); %2-by-3矩陣,元素皆為0 A = ones(2,3); %2-by-3矩陣,元素皆為1 A = eye(4) % 建立4-by-4的單位矩陣 A = magic(5) % 建立5-by-5的魔方陣 A = rand(5) % 建立5-by-5的矩陣,每個元素都是(0, 1)之間的亂數

矩陣的存取 A(i, j)會存取矩陣A 的第i個row,第j個column的元素 1 2 3 4 5 6 5 8 9 10 11 12 一次取出/改變/刪除一整個行或列 B = A(1,:) A(2,:) = [9 8 7 6] A(:,3) = [5; 9; 13]

矩陣的存取 矩陣合併之一 矩陣合併之二 A = [1 2 3 4; 5 6 7 8; 9 10 11 12] A = [A [2; 4; 6]] % 新增一個column A = [A; [3 4 5 6 7]] % 再新增一個row 矩陣合併之二 B = [1 2; 3 4; 5 6] C = [A B] % ---------分隔線----------- B = [13 14 15 16; 17 18 19 20] C = [A; B]

向量與矩陣的運算 有一些函數是特別針對向量及矩陣而設計 針對矩陣的運算效果,可參考「help」的說明 y = min(x) % 向量 x 的極小值 y = max(x) % 向量 x 的極大值 y = mean(x) % 向量 x 的平均值 y = sum(x) % 向量 x 的總和 y = sort(x) % 向量 x 的排序 針對矩陣的運算效果,可參考「help」的說明

向量與矩陣的運算 若想知道y值是在向量中的哪個位置 若想知道向量或矩陣的大小 x = [4 2 6 1 10] [y, idx] = min(x) % y為1,idx為4 若想知道向量或矩陣的大小 a = 1:5, B = [1:5; 6:10] length(a) % 回傳向量a的長度 [m n] = size(B) %回傳矩陣B的row和column的數目 m = size(B,1) %回傳矩陣B的row的數目 n = size(B,2) %回傳矩陣B的column的數目

向量與矩陣的運算 find指令對矩陣的作用 find指令:尋找元素出現的位置 a = [3 1 4 6 5 7 9 7 8 0]

向量與矩陣的運算 依條件修改向量之元素 依條件修改矩陣之元素 a = [3 2 4 5 7 9 1 8 6 0] a(a<=4) = 7 % 把小於等於4的元素都修改成7 a(a<=4) = [100 101 102 103 104] % 如果知道有幾個元素,也可以用向量個別指派 依條件修改矩陣之元素 A = [3 4 5 6; 7 8 9 0] A(A<=5) = 123

矩陣的運算 A = round(rand(5,5)*10) % 產生5-by-5矩陣,元素值在0~10之間 det(A) % 行列式值(determinant) inv(A) % A的反矩陣 A^-1 A\eye(5) 關於使用何者較好,可參照「help inv」之內容 x = A\b 解線性系統 Ax=b

繪圖指令-plot(x,y) plot : 最基本的繪圖指令 若plot有輸入x向量和y向量 對 x 及相對應的 y 進行作圖 x = linspace(0, 2*pi); y = sin(x); plot(x, y);

繪圖指令-plot(x1,y1,x2,y2,…) 一次畫出多條曲線 會自動換顏色 x = linspace(0, 2*pi); plot(x, sin(x), x, cos(x), x, sin(x)+cos(x)); grid on; % 畫出格網

繪圖指令-plot(x1,y1,x2,y2,…) 幫圖形加入說明文字/軸標籤/標題 x = linspace(0, 2*pi); plot(x, sin(x), x, cos(x), x, sin(x)+cos(x)); grid on; legend('sin', 'cos', 'sin+cos'); xlabel('x'); ylabel('f(x)'); title('加入說明文字的範例');

plot指令-加上線標 以不同的線標(marker)作圖 查閱help的內容,可以獲得更多說明 x = linspace(0, 2*pi); plot(x, sin(x), 'o-', ... x, cos(x), '+', ... x, sin(x)+cos(x), 'x'); grid on; legend('sin', 'cos', 'sin+cos'); xlabel('x');ylabel('f(x)'); title('加入說明文字的範例'); 查閱help的內容,可以獲得更多說明

極座標繪圖–polar(theta,r) 極座標畫圓 theta = linspace (0, 2*pi); r= ones(1,length(theta)); polar(theta , r); theta=linspace (0, 2*pi,1000); r= cos(4*theta); polar(theta,r); hold on r= sin(4*theta);

極座標繪圖–polar(theta,r) 極座標畫玫瑰線 theta = linspace (0, 2*pi); r= cos(4*theta); polar(theta , r); theta=linspace (0, 2*pi,1000); r= cos(4*theta); polar(theta,r); hold on r= sin(4*theta);

極座標繪圖–polar(theta,r) 極座標畫心臟線 theta = linspace (0, 2*pi); r= 1-sin(theta); polar(theta , r); theta=linspace (0, 2*pi,1000); r= cos(4*theta); polar(theta,r); hold on r= sin(4*theta);

更多的繪圖指令 ezplot: 用簡單的方式畫出函數圖型 bar:長條圖 pie:扇形圖 hist: 直方圖(Histogram) stem:針頭圖 stairs: 階梯圖

ezplot 範例: h = ezplot('x^2+y^2=1'); set(h, 'color', 'black', 'linestyle', '-'); hold on; % 讓之後繪製的曲線附加上去,而非清除舊的曲線 h = ezplot('sin(x)'); set(h, 'color', 'red', 'linestyle', '--'); title(''); legend('circle', 'sin');

ezplot 執行結果:

ezplot-使用參數式 範例: h = ezplot('2*cos(t)+3','4*sin(t)+5'); hold on; % 讓之後繪製的曲線附加上去,而非清除舊的曲線 h = ezplot('6*cos(t)+7','8*sin(t)+9', [-0.7*pi 0.7*pi]); title('');

ezplot-畫Doraemon 成品:

長條圖 - bar 範例:大學部男生宿舍床位數 資料來源:學務處住宿組 data = [774 357 300 285]; xlabel('齋舍別'); ylabel('人數'); set(gca, 'xticklabel',{'新','實','仁','義'});

長條圖 - bar 範例:數據量測呈現 資料來源:普物實驗萬年報告 同一個row的資料會聚集在一起 data = [15.8 15.9 15.6; 20 20.2 20.3]; bar(data); ylabel('長度'); set(gca, 'xticklabel',{'內徑','外徑'}); legend('第一次','第二次','第三次'); 同一個row的資料會聚集在一起

扇形圖 - pie 範例:100上學士班院系人數統計 資料來源:教務處註冊組 data=[761 869 1138 1508 940]; label={'人社','科管','電資','工院','理院'}; pie(data, label);

直方圖 - hist 範例:數據量測呈現 資料來源:普物實驗萬年報告 data = [72 69 75 83 67 74 82 91 69 93 84 70 68 71 78 85 69 96 88 79 ]; figure; subplot(2,2,1); hist(data); title('預設10個bin'); subplot(2,2,2); hist(data,5); title('指定bin的個數'); subplot(2,2,3); hist(data,65:10:95); title('指定bin的中心值'); subplot(2,2,4); bar(60:10:100,histc(data,60:10:100),'histc'); title('指定bin的範圍');

直方圖 - hist 執行結果

如何另存/複製圖片 儲存圖片檔 複製圖片 File→Save As 圖片類型可選png或eps Edit→Copy Figure 可利用Edit→Copy Options設定細節

關於向量與矩陣的其他函式 a = [1 2 3]; b = [6 2 7]; A = [1 2 3; 5 10 8; 11 -3 66]; x = roots(a); % 方程式求根 M = cov(a, b); % 共變異矩陣 A = [1 2 3; 5 10 8; 11 -3 66]; [L U P] = lu(A); % LU分解 [Q R] = qr(A); % QR分解 [U S V] = svd(A); % 奇異值(singular value)分解 [V D] = eig(A); % 特徵分解