張智星 (Roger Jang) 清大資工系 多媒體檢索實驗室

Slides:



Advertisements
Similar presentations
第6章 Photoshop 的浮动面板 本章节学生应熟练掌握Photoshop的浮动面板的组成和使用。 教学重点:
Advertisements

概述 6.1 导航器面板 6.2 信息面板 6.3 调色板面板 6.4 色板面板 6.5 样式面板 6.6 历史记录面板
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 程式計時 張智星 清大資工系.
MATLAB 程式設計 時間量測 清大資工系 多媒體資訊檢索實驗室.
第六章 统计表与统计图 第一节 统计表 第二节 统计图 1.
MATLAB 程式設計簡介 修改自張智星教授講義
中二數學 第五章 : 二元一次方程 二元一次方程的圖像.
圖解二元一次不等式暨二元一次聯立不等式 竹南國中製作團隊 劉朝益 林琨庭 林榮耀 下一頁.
應用於BIM科技中 幾何平面切割與解構 教案設計人:Shuyi.
MATLAB小结、 经典迭代法、CG.
Introduction to Matlab
Introduction to Matlab
1012 MATLAB 教學 彭奕翔 2013/02/27.
張智星 (Roger Jang) 台大資工系 多媒體檢索實驗室
MATLAB程序设计基础 MATLAB的图形处理.
數值分析 (Numerical Analysis)
——Matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是其它语言所不能比拟的。
MATLAB簡介 MATLAB程式設計《入門篇》
顏色與背景CSS樣式.
PowerPoint圖形總合.
DreamWeaver MX (II) 林偉川.
Chap.3 二維平面繪圖 方煒 台大生機系.
第三章 MATLAB图形系统 3.1 图形绘制 3.2 图形标注 3.3 对数和极坐标系中图形绘制 3.4 复杂图形绘制 3.5 坐标轴控制
MATLAB 程式設計進階篇 一般數學函數的處理與分析
點狀圖 (Dot Plot).
第二十四單元 柱面與球面座標.
Matlab教學 Speaker:林昱志 Date:2012/10/25.
數學與電腦 的初相識 汪群超 個人網址: 變有不可者三,有不可不變者三: 能力未至不可變也、 學識未敷不得變也、 功侯未到不能變也。
SQL Stored Procedure SQL 預存程序.
音訊 延伸學習 Audio Signal Processing and Recognition (音訊處理與辨識) 張智星
MATLAB 程式設計入門篇 握把式圖形與 GUI 設計
第一讲 MATLAB简介 1.1 MATLAB与通信仿真 1.1.1 通信电路与系统仿真 1.1.2 MATLAB的发展史
Application of Matlab Language
第4章 MATLAB绘图 4.1 MATLAB二维曲线绘图 基本绘图指令 1.plot(Y) 功能:画一条或多条折线图.
第三章 MATLAB图形系统 3.1 图形绘制 3.2 图形标注 3.3 对数和极坐标系中图形绘制 3.4 复杂图形绘制 3.5 坐标轴控制
Introduction to MATLAB
数学建模与数学实验 MATLAB作图.
§ 9.1常用数学软件简介及MATLAB基础知识
建立一 function s (type) 可以用來繪製cyclic-harmonic curves
分支宣告與程式設計 黃聰明 國立臺灣師範大學數學系
網路程式設計期末project B 張芸菱.
MATLAB 程式設計入門篇 動畫製作.
第一章 直角坐標系 1-3 函數圖形.
MATLAB 程式設計入門篇 二維平面繪圖 (part2)
15.5 最大值和最小值 的問題 附加例題 9 附加例題 10 © 文達出版 (香港 )有限公司.
本章學習目標 學習極座標繪圖與對數繪圖 學習雙y軸繪圖 學習向量場繪圖 學習統計繪圖 在Matlab的環境裡製作動畫
張智星 清大資工系 多媒體檢索實驗室 Tree Net Construction 張智星 清大資工系.
MATLAB 程式設計入門篇 二維平面繪圖 改自張智星講義
Z Mathematical Model ‡ ' 图形处理.
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.
本章學習目標 學習三維繪圖的基本技巧 學習peaks() 函數的用法 學習二維與三維等高線圖的繪製 學習三維圖形的編修
Ogive plot example 說明者:吳東陽 2003/10/10.
微積分 第二次上機 Matlab 教學 2007/10/30 陳逸嬿.
張智星 (Roger Jang) 台大資工系 多媒體檢索實驗室
體積.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
第二节 MATLAB 图形处理 内容: §1 二维图形显示 §2 图形可视编辑工具 §3 三维图形显示 §4 视角变换与三视图
PowerPoint 操作介紹 106 計算機概論
Project 4 The Dragon Curve
1757: Secret Chamber at Mount Rushmore
語音訊號的特徵向量 張智星 多媒體資訊檢索實驗室 清華大學 資訊工程系.
第一章 直角坐標系 1-3 函數及其圖形.
第十三章 彩色影像處理.
第五章 自訂佈景主題與文字處理 講授者:詹雅愔.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
第2章 MATLAB的基本语法 2.1 变量及其赋值 2.2 运算符与数学表达式 2.3 控制流 2.4 数据的输入输出及文件的读写
MessageBoxButtons 按鈕 1 AbortRetryIgnore [中止]、[重試] 和 [忽略]   2 OK [確定] 3
InputStreamReader Console Scanner
Presentation transcript:

張智星 (Roger Jang) jang@mirlab.org http://mirlab.org/jang 清大資工系 多媒體檢索實驗室 MATLAB 程式設計入門篇 二維平面繪圖 張智星 (Roger Jang) jang@mirlab.org http://mirlab.org/jang 清大資工系 多媒體檢索實驗室

3-1 基本的繪圖指令 Plot : 最基本的繪圖指令 對 x 座標及相對應的 y 座標進行作圖 範例3-1:plotxy01.m x = linspace(0, 2*pi); % 在 0 到 2π 間,等分取 100 個點 y = sin(x); % 計算 x 的正弦函數值 plot(x, y); % 進行二維平面描點作圖

Plot基本繪圖-1 只給定一個向量 plot(y)和plot(1:length(y), y)會得到相同的結果 linspace(0, 2*pi) 產生從 0 到 2π且長度為 100 (預設值)的向量 x y 是對應的 y 座標 只給定一個向量 該向量則對其索引值(Index)作圖 plot(y)和plot(1:length(y), y)會得到相同的結果

Plot基本繪圖-2 (I) 一次畫出多條曲線 將 x 及 y 座標依次送入plot 指令 範例3-2:plotxy02.m x = linspace(0, 2*pi); % 在 0 到 2 間,等分取 100 個點 plot(x, sin(x), x, cos(x), x, sin(x)+cos(x)); % 進行多條曲線描點作圖

Plot基本繪圖-2 (II) 畫出多條曲線時,會自動輪換曲線顏色 Plot(x,sin(x), x, cos(x), x, sin(x)+cos(x)); 畫出多條曲線時,會自動輪換曲線顏色

Plot基本繪圖-3 (I) 若要以不同的線標(Marker)來作圖 範例3-3:plotxy03.m x = linspace(0, 2*pi); % 在 0 到 2 間,等分取 100 個點 plot(x, sin(x), 'o', x, cos(x), 'x', x, sin(x)+cos(x), '*');

Plot基本繪圖-3 (II)

Plot基本繪圖-4 (I) 只給定一個矩陣 y 對矩陣 y 的每一個行向量(Column Vector)作圖 範例3-4:plot04.m y = peaks; % 產生一個 49×49 的矩陣 plot(y); % 對矩陣 y 的每一個行向量作圖

Plot基本繪圖-4 (II) peaks 指令產生一個49×49的矩陣,代表二維函數的值 plot(y) 直接畫出 49 條直線

Plot基本繪圖-5 (I) x 和 y 都是矩陣 plot(x, y) 會取用 y 的每一個行向量和對應的 x 行向量作圖 範例3-5:plotxy05.m x = peaks; y = x'; % 求矩陣 x 的轉置矩陣 x' plot(x, y); % 取用矩陣 y 的每一行向量,與對應矩陣 x % 的每一個行向量作圖

Plot基本繪圖-5 (II)

提示 一般情況下,MATLAB 將矩陣視為行向量的集合 對只能處理向量的函數(Ex : max、min、 mean) 給定一個矩陣,函數會對矩陣的行向量一一進行處理或運算

Plot基本繪圖-6 (I) z 是一個複數向量或矩陣 plot(z) 將 z 的實部(即 real(z))和虛部(即 imag(z))當成 x 座標和 y 座標來作圖, 其效果等於 plot(real(z), imag(z)) 範例3-6:plotxy06.m x = randn(30); % 產生 30×30 的亂數(正規分佈)矩陣 z = eig(x); % 計算 x 的「固有值」(或稱「特徵值」) plot(z, 'o') grid on % 畫出格線

Plot基本繪圖-6 (II) x 是一個 30×30 的亂數矩陣 z 則是 x 的「固有值」(Eigenvalue,或「特徵值」)

基本二維繪圖指令 指令 說明 Plot x 軸和 y 軸均為線性刻度(Linear Scale) loglog x 軸和 y 軸均為對數刻度(Logarithmic Scale) semilogx x 軸為對數刻度,y 軸為線性刻度 semilogy x 軸為線性刻度,y 軸為對數刻度 plotyy 畫出兩個刻度不同的y軸

Plot基本繪圖-7 (I) Semilogx指令 使 x 軸為對數刻度,對正弦函數作圖 範例plotxy07.m x = linspace(0, 8*pi); % 在 0 到 8 間,等分取 100 個點 semilogx(x, sin(x)); % 使 x 軸為對數刻度,並對其正弦函數作圖

Plot基本繪圖-7 (II) X軸為對數刻度

Plot基本繪圖-8 (I) plotyy 指令 畫出兩個刻度不同的 y 軸 範例3-8:plotxy08.m x = linspace(0, 2*pi); % 在 0 到 2 間,等分取 100 個點 y1 = sin(x); y2 = exp(-x); plotyy(x, y1, x, y2); % 畫出兩個刻度不同的 y 軸,分別是 y1, y2

Plot基本繪圖-8 (II) y1 的刻度是在左手邊 y2 的刻度是在右手邊 兩邊的刻度不同 y2的刻度 y1的刻度

3-2 圖形的控制 plot 指令,可以接受一個控制字串輸入 用以控制曲線的顏色、格式及線標 使用語法 C:曲線的顏色 (Colors) plot(x, y, ‘CLM‘) C:曲線的顏色 (Colors) L:曲線的樣式 (Line Styles) M:曲線資料點所用的線標 (Markers)

圖形控制範例-1 (I) 用黑色點線畫出正弦波 每一資料點畫上一個小菱形 範例3-9:plotxy09.m x = 0:0.5:4*pi; % x 向量的起始與結束元素為 0 及 4, % 0.5為各元素相差值 y = sin(x); plot(x, y,‘k:diamond’) % 其中「k」代表黑色,「:」代表點 % 線,而「diamond 」則指定菱形為曲 % 線的線標

圖形控制範例-1 (II)

plot 指令的曲線顏色 Plot指令的曲線顏色字串 曲線顏色 RGB值 b 藍色(Blue) (0,0,1) c 青藍色(Cyan) (0,1,1) g 綠色(Green) (0,1,0) k 黑色(Black) (0,0,0) m 紫黑色(Magenta) (1,0,1) r 紅色(Red) (1,0,0) w 白色 (1,1,1) y 黃色(Yellow) (1,1,0)

plot 指令的曲線格式 plot 指令的曲線樣式字串 曲線樣式 - 實線(預設值) -- 虛線 : 點線 -. 點虛線

plot 指令的曲線線標 (I) plot 指令的曲線線標字串 線標說明 O 圓形 + 加號 X 叉號 * 星號 . 點號 ^ 朝上三角形 V 朝下三角形

plot 指令的曲線線標 (II) plot 指令的曲線線標字串 線標說明 > 朝右三角形 < 朝左三角形 square 方形 diamond 菱形 pentagram 五角星形 hexagram 六角星形 None 無符號(預設值)

3-3 圖軸的控制 plot 指令會根據座標點自動決定圖軸範圍 也可以使用 axis 指令指定圖軸範圍 使用語法: axis([xmin, xmax, ymin, ymax]) xmin , xmax:指定 x 軸的最小和最大值 ymin , ymax:指定 y 軸的最小和最大值

圖軸控制範例-1 (I) 畫出正弦波在 y 軸介於 0 和 1 的部份 範例3-10:plotxy10.m x = 0:0.1:4*pi; % 起始與結束元素為 0 及 4,0.1 為各 % 元素相差值 y = sin(x); plot(x, y); axis([-inf, inf, 0, 1]); % 畫出正弦波 y 軸介於 0 和 1 的部份

圖軸控制範例-1 (II) inf指令: 以資料點(上例: x 軸的資料點)的最小和最大值取代之

圖軸控制範例-2 (I) 指定圖軸上的格線點(Ticks) 範例3-11:plotxy11.m x = 0:0.1:4*pi; plot(x, sin(x)+sin(3*x)) set(gca, ‘ytick’, [-1 -0.3 0.1 1]); % 在 y 軸加上格線點 grid on % 加上格線

圖軸控制範例-2 (II) grid on:加上格線 gca: get current axis的簡稱 傳回目前使用中的圖軸 gca屬Handle Graphics的指令,第七章會有更詳細的說明 使用者加入的格線點和文字

圖軸控制範例-3 (I) 將格線點的數字改為文字 範例3-12:plotxy12.m x = 0:0.1:4*pi; plot(x, sin(x)+sin(3*x)) set(gca, 'ytick', [-1 -0.3 0.1 1]); % 改變格線點 set(gca, ‘yticklabel’, {‘極小’,‘臨界值’,‘崩潰值’,‘極大’}); % 改變格線點的文字 grid on % 加上格線

圖軸控制範例-3 (II)

Subplot subplot 在一個視窗產生多個圖形(圖軸) 一般形式為 subplot (m, n, p) 將視窗分為 m ×n 個區域 下一個 plot 指令繪圖於第 p 個區域 p 的算法為由左至右,一列一列

圖軸控制範例-4 (I) 同時畫出四個圖於一個視窗中 範例3-13:plotxy13.m x = 0:0.1:4*pi; subplot(2, 2, 1); plot(x, sin(x)); % 此為左上角圖形 subplot(2, 2, 2); plot(x, cos(x)); % 此為右上角圖形 subplot(2, 2, 3); plot(x, sin(x).*exp(-x/5)); % 此為左下角圖形 subplot(2, 2, 4); plot(x, x.^2); % 此為右下角圖形

圖軸控制範例-4 (II) Subplot(2,2,1) Subplot(2,2,2) Subplot(2,2,3)

圖軸控制範例-5 (I) 長寬比(Aspect Ratio) 一般圖軸長寬比是視窗的長寬比 可在 axis 指令後加不同的字串來修改 範例3-14:plotxy14.m t = 0:0.1:2*pi; x = 3*cos(t); y = sin(t); subplot(2, 2, 1); plot(x, y); axis normal subplot(2, 2, 2); plot(x, y); axis square subplot(2, 2, 3); plot(x, y); axis equal subplot(2, 2, 4); plot(x, y); axis equal tight

圖軸控制範例-5 (II) axis normal axis square axis equal axis square tight

改變圖軸長寬比的指令 改變目前圖軸長寬比的指令 需在 plot 指令之後呼叫才能發揮效用 指令 說明 axis normal 使用預設長寬比(等於圖形長寬比) axis square 長寬比例為 1 axis equal 長寬比例不變,但兩軸刻度一致 axis equal tight 兩軸刻度比例一致,且圖軸貼緊圖形 axis image 兩軸刻度比例一致(適用於影像顯示)

改變圖軸背景顏色的指令 colordef 改變圖軸與視窗之背景顏色 先呼叫 colordef 指令,其後 plot 指令產生的圖形才有效用 說明 colordef white 圖軸背景為白色,視窗背景為淺灰色 colordef black 圖軸背景為黑色,視窗背景為暗灰色 colordef none 圖軸背景為黑色,視窗背景為黑色(這是 MATLAB 第 4 版的預設值)

grid 和 box 指令 畫出格線或畫出圖軸外圍的方形 指令 說明 grid on 畫出格線 grid off 取消格線 box on 畫出圖軸的外圍長方形 box off 取消圖軸的外圍長方形

3-4 加入說明文字 在圖形或圖軸加入說明文字,增進整體圖形的可讀性 指令 說明 title 圖形的標題 xlabel x 軸的說明 ylabel y 軸的說明 zlabel z 軸的說明(適用於立體繪圖) legend 多條曲線的說明 text 在圖形中加入文字 gtext 使用滑鼠決定文字的位置

說明文字範例-1 (I) 範例3-15:plotxy15.m subplot(1,1,1); x = 0:0.1:2*pi; y1 = sin(x); y2 = exp(-x); plot(x, y1, '--*', x, y2, ':o'); xlabel('t = 0 to 2\pi'); ylabel('values of sin(t) and e^{-x}') title('Function Plots of sin(t) and e^{-x}'); legend('sin(t)','e^{-x}');

說明文字範例-1 (II) legend 指令 「\」為特殊符號 畫出一小方塊,包含每條曲線的說明 產生上標、下標、希臘字母、數學符號等 遵循一般 LaTex 或 TeX數學模式

說明文字範例-2 (I) text指令 使用語法: text(x, y, string) x、y :文字的起始座標位置 範例3-16:plotxy16.m x = 0:0.1:2*pi; plot(x, sin(x), x, cos(x)); text(pi/4, sin(pi/4),'\leftarrow sin(\pi/4) = 0.707'); text(5*pi/4, cos(5*pi/4),'cos(5\pi/4) = -0.707\rightarrow', 'HorizontalAlignment', 'right');

說明文字範例-2 (II) 「HorizontalAlignment」及「right」指示 text 指令將文字向右水平靠齊

gtext指令 使用語法 gtext(string) 在圖上點選一位置後,string 顯示在其上。 gtext 只能用在二維平面繪圖

3-5 其他平面繪圖指令 各種二維繪圖指令 指令 說明 errorbar 在曲線加上誤差範圍 fplot、ezplot 較精確的函數圖形 polar、ezpolar 極座標圖形 hist 直角座標質方圖(累計圖) rose 極座標質方圖(累計圖) compass 羅盤圖 feather 羽毛圖 area 面積圖(第五章「特殊圖形」介紹) stairs 階梯圖(第五章「特殊圖形」介紹)

其他平面繪圖範例-1 (I) 已知資料的誤差範圍,用 errorbar 表示 以 y 座標高度 20% 作為做資料的誤差範圍 範例3-17:plotxy17.m x = linspace(0,2*pi,30); % 在 0 到 2 間,等分取 30 個點 y = sin(x); e = y*0.2; errorbar(x,y,e) % 圖形上加上誤差範圍 e

其他平面繪圖範例-1 (II) 誤差範圍

其他平面繪圖範例-2 (I) fplot 指令 對劇烈變化處進行較密集的取樣 範例3-18:plotxy18.m fplot('sin(1/x)', [0.02 0.2]); % [0.02 0.2]是繪圖範圍

其他平面繪圖範例-2 (II) 此區作較精確的取點繪圖

其他平面繪圖範例-3 (I) polar 指令 產生極座標圖形 範例3-19:plotxy19.m theta = linspace(0, 2*pi); r = cos(4*theta); polar(theta, r); % 進行極座標繪圖

其他平面繪圖範例-3 (II)

直方圖及hist指令 直方圖(Histogram) hist指令 對大量的資料,顯示資料的分佈情況和統計特性 將資料依大小分成數堆,將每堆的個數畫出

其他平面繪圖範例-4 (I) 將 10000 個由 randn 產生的正規分佈之亂數分成 25 堆 範例3-20:plotxy20.m x = randn(10000, 1); % 產生 10000 個正規分佈亂數 hist(x, 25); % 繪出直方圖,顯示 x 資料的分佈情 %況和統計特性,數字 25 代表資料依 %大小分堆的堆數,即是指方圖內長條 %的個數 set(findobj(gca, ‘type’, ‘patch’), ‘edgecolor’, ‘w’); % 將長條 %圖的邊緣設定成白色

其他平面繪圖範例-4 (II) 質方圖逼近亂數的機率分佈函數,且資料量越大時,逼近程度越高

其他平面繪圖範例-5 (I) rose指令 角度:資料大小 距離:資料個數 以極座標繪製表示 範例3-21:plotxy21.m x = randn(5000, 1); % 產生 5000 個正規分佈的亂數 rose(x); % x 資料大小為角度,x 資料個數為距離, %以繪製類似玫瑰花瓣的極座標直方圖

其他平面繪圖範例-5 (II)

其他平面繪圖範例-6 (I) compass 指令 畫出以原點為起始點的向量圖 稱為「羅盤圖」 範例3-22:plotxy22.m theta = linspace(0, 2*pi, 50); rho = sin(0.5*theta); [x, y] = pol2cart(theta, rho); % 由極座標轉換至直角座標 compass(x, y); % 畫出以原點為向量起始點 % 的羅盤圖

其他平面繪圖範例-6 (II) 若只有一個引數輸入z 將 z 的實部做為 x 座標,將 z 的虛部做為 y 座標,再進行作圖 範例3-23:plotxy23.m 若只有一個引數輸入z 將 z 的實部做為 x 座標,將 z 的虛部做為 y 座標,再進行作圖 compass(z) 即等效於 compass(real(z),imag(z)) 上述四列程式碼可簡化 theta = linspace(0, 2*pi, 50); compass(sin(0.5*theta).*exp(j*theta));

其他平面繪圖範例-7 (I) 羽毛圖 起始點是 (k, 0),k = 1~n ,其中 n 是向量個數 範例3-24:plotxy24.m theta = linspace(0.2*pi,50); rho = 10; [x, y] = pol2cart(theta,rho); % 由極座標轉換至直角座標 feather(x, y); % 繪製羽毛圖

其他平面繪圖範例-8 (I)