黃聰明 國立臺灣師範大學數學系 min@ntnu.edu.tw http://math.ntnu.edu.tw/~min 其它的資料型態與繪圖型態 黃聰明 國立臺灣師範大學數學系 min@ntnu.edu.tw http://math.ntnu.edu.tw/~min T.-M.Huang.

Slides:



Advertisements
Similar presentations
MATLAB 程式設計入門篇 第十章:字元與字串 張智星 (Roger Jang) 台大資工系 多媒體檢索實驗室.
Advertisements

电子成绩单项目实现.
黃聰明 臺灣師範大學數學系 MATLAB 基本功能介紹 黃聰明 臺灣師範大學數學系.
MATLAB小结、 经典迭代法、CG.
TQC+ 物件導向程式認證-JAVA.
Introduction to Matlab
Matlab教學 Speaker:林昱志 Date:2012/10/18.
1012 MATLAB 教學 彭奕翔 2013/02/27.
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
数学软件 Matlab —— 二维平面作图 —— 三维空间作图.
補充: Input from a text file
程設一.
性別透視鏡 鳳鳴電台 高宜君老師.
C++程序设计 王希 图书馆三楼办公室.
XI. Hilbert Huang Transform (HHT)
Matlab及其应用 鲍文 哈尔滨工业大学 先进动力控制与可靠性研究所
字元與字串 方煒 台大生機系.
MATLAB介紹.
第二章 C# 基础知识.
第三章 MATLAB图形系统 3.1 图形绘制 3.2 图形标注 3.3 对数和极坐标系中图形绘制 3.4 复杂图形绘制 3.5 坐标轴控制
張智星 清大資工系 補充內容:方煒 台大生機系 小幅修改:吳俊仲 長庚機械系
張智星 清大資工系 補充內容:方煒 台大生機系
MATLAB 程式設計進階篇 一般數學函數的處理與分析
MATLAB 程式設計進階篇 一般數學函數的處理與分析
第3章 變數、資料型別與運算子.
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
范洪源 臺灣師範大學數學系 MATLAB 基本功能介紹 范洪源 臺灣師範大學數學系.
Matlab教學 Speaker:林昱志 Date:2012/10/25.
Matlab M檔案 方煒 台大生機系.
本單元介紹何謂變數,及說明變數的宣告方式。
數學與電腦 的初相識 汪群超 個人網址: 變有不可者三,有不可不變者三: 能力未至不可變也、 學識未敷不得變也、 功侯未到不能變也。
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
Function.
第七章 字符串处理 7.1 字符阵列 7.2 字符串单元阵列 7.3 字符串比较 7.4 字符串搜索与取代 7.5 字符串与数值之间的变换
Origin绘图和数据分析 2006年11月.
Application of Matlab Language
第4章 MATLAB绘图 4.1 MATLAB二维曲线绘图 基本绘图指令 1.plot(Y) 功能:画一条或多条折线图.
張智星 清大資工系 多媒體檢索實驗室 第九章: 矩陣的處理與運算 張智星 清大資工系 多媒體檢索實驗室.
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
黃聰明 國立臺灣師範大學數學系 MATLAB 基本功能介紹 黃聰明 國立臺灣師範大學數學系
重點 資料結構之選定會影響演算法 選擇對的資料結構讓您上天堂 程式.
引 言.
第三章 MATLAB图形系统 3.1 图形绘制 3.2 图形标注 3.3 对数和极坐标系中图形绘制 3.4 复杂图形绘制 3.5 坐标轴控制
Introduction to MATLAB
第九章: 矩陣的處理與運算 張智星 (Roger Jang)
数学建模与数学实验 MATLAB作图.
范洪源 臺灣師範大學數學系 分支宣告與程式設計 范洪源 臺灣師範大學數學系.
編譯程式設計 期末專題說明 V1.1 May 2004.
分支宣告與程式設計 黃聰明 國立臺灣師範大學數學系
第7章 陣列與指標 7-1 陣列的基礎 7-2 一維陣列的處理 7-3 二維與多維陣列的處理 7-4 陣列的函數參數
数学建模 江西财经大学 数学与管理决策系 制作:华长生 华长生制作.
MATLAB 入门教程.
Speaker: Liu Yu-Jiun Date: 2009/4/29
張智星 (Roger Jang) 清大資工系 多媒體檢索實驗室
MATLAB 程式設計入門篇 初探MATLAB
MATLAB 程式設計入門篇 二維平面繪圖 改自張智星講義
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编程与作图 2.1 程序设计 2.2 作图 2.3 在线帮助和文件管理 2.4 习题 2019年4月23日
本节内容 Lua基本语法.
第二节 MATLAB 图形处理 内容: §1 二维图形显示 §2 图形可视编辑工具 §3 三维图形显示 §4 视角变换与三视图
统计软件应用 2 主讲人 陶育纯 SPSS 统计软件应用 2 主讲人 陶育纯 教案.
Introduction to Matlab
MATLAB 程式設計 程式除錯 方煒 台大生機系.
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
變數與資料型態  綠園.
科研工具之图表制作---Sigmaplot
Presentation transcript:

黃聰明 國立臺灣師範大學數學系 min@ntnu.edu.tw http://math.ntnu.edu.tw/~min 其它的資料型態與繪圖型態 黃聰明 國立臺灣師範大學數學系 min@ntnu.edu.tw http://math.ntnu.edu.tw/~min T.-M.Huang

其它的資料型態與繪圖型態 T.-M.Huang

==、~=:比較兩個複數是否相等、不相等 6-1 複數資料 >> c = 4 + 1i * 3 >> c = 4 + 3i isreal(array) 用來檢查陣列是實數或複數陣列,如果是複數陣列, isreal(array)會傳回結果0 關係運算子 ==、~=:比較兩個複數是否相等、不相等 >、>=、<、<=:不能使用,因這些運算子 只比較複數的實數部份而已。 其它的資料型態與繪圖型態 T.-M.Huang

支援複數資料型態的函式 函式 描述 conj(c) 計算複數c的共軛複數 real(c) 傳回複數c的實數部分 imag(c) abs(c) 傳回複數c的絕對值大小 angle(c) 傳回複數c的角度 其它的資料型態與繪圖型態 T.-M.Huang

範例:一元二次方程式 輸出二次方程式的根 輸入係數 a、b、c 不同的實數根 重複的實數根 複 數 根 不區分 其它的資料型態與繪圖型態 T.-M.Huang

disp ('This program solves for the roots of a quadratic '); disp ('equation of the form A*X^2 + B*X + C = 0. '); a = input ('Enter the coefficient A: '); b = input ('Enter the coefficient B: '); c = input ('Enter the coefficient C: '); % Calculate discriminant discriminant = b^2 - 4 * a * c; % Solve for the roots x1 = ( -b + sqrt(discriminant) ) / ( 2 * a ); x2 = ( -b - sqrt(discriminant) ) / ( 2 * a ); % Display results disp ('The roots of this equation are:'); fprintf ('x1 = (%f) +i (%f)\n', real(x1), imag(x1)); fprintf ('x2 = (%f) +i (%f)\n', real(x2), imag(x2)); 其它的資料型態與繪圖型態 T.-M.Huang

Warning: Imaginary parts of complex X and/or Y arguments ignored 複數資料的圖形 t = 0:pi/20:4*pi; y = exp(-0.2*t).*(cos(t)+i*sin(t)); plot(t, y, 'LineWidth', 2); title('\bfPlot of complex function vs time'); xlabel('\bf\it t'); ylabel('\bf\it y(t)'); Warning: Imaginary parts of complex X and/or Y arguments ignored 其它的資料型態與繪圖型態 T.-M.Huang

複數資料的圖形 t = 0:pi/20:4*pi; y = exp(-0.2*t).*(cos(t)+i*sin(t)); plot(t, real(y), 'b-', 'LineWidth', 2); hold on plot(t, imag(y), 'r--', 'LineWidth', 2); title('\bfPlot of complex function vs time'); xlabel('\bf\it t'); ylabel('\bf\it y(t)'); legend('real', 'imaginary'); hold off 其它的資料型態與繪圖型態 T.-M.Huang

複數資料的圖形 t = 0:pi/20:4*pi; y = exp(-0.2*t).*(cos(t)+i*sin(t)); plot(y, 'b-', 'LineWidth', 2); title('\bfPlot of complex function'); xlabel('\bf\it Real part'); ylabel('\bf\it Imaginary part'); 其它的資料型態與繪圖型態 T.-M.Huang

複數資料的圖形 t = 0:pi/20:4*pi; y = exp(-0.2*t).*(cos(t)+i*sin(t)); polar(angle(y), abs(y)); title('\bfPlot of complex function'); 其它的資料型態與繪圖型態 T.-M.Huang

6-2 字串函式 數個字元(Characters)可以構 成一個字串(Strings) 一個字串是被視為一個列向量 (Row Vector)進行儲存 字串中的每一字元(含空白字元),是 以其 ASCII 碼的形式存放於此列向量 中的每一個元素(Element) 其它的資料型態與繪圖型態 T.-M.Huang

字元與字串的基本概念 Matlab 用「單引號」來界定字串變數,多個 字串變數可直接並排,以得到一個新字串變數 str1 = 'I like MATLAB,'; % 建立字串變數 str1 str2 = ' JavaScript, and Perl!'; % 建立字串變數 str2 str3 = [str1 str2] % 直接並排str1及str2,以建立str3 str3 = I like MATLAB, JavaScript, and Perl! 其它的資料型態與繪圖型態 T.-M.Huang

字元與字串的基本概念(cont) 欲輸入含有單引號的字串,可重覆單引號的使用。 若要計算字串變數的長度(即組成字元的個數),可用 length 指令。 >> sentence = 'I''ve got a date!'; >> length(sentence) % 計算字串變數 sentence 的長度 ans = 16 其它的資料型態與繪圖型態 T.-M.Huang

字元的儲存 無論是中文或英文,每一個字元都會佔用兩個位元組(2 Bytes), 故字串變數 sentence = 'I''ve got a date!' 總共由 16 個字 元構成,佔用的記憶體總計為三十二個位元組(32 bytes) whos 指令: 檢視字串變數 sentence 所佔用儲存空間(whos 變數) MATLAB 是以兩個位元組來儲存一個字元,所以也可以支援 Big5 的中文碼,而且 Big5 中文的 ASCII 內碼都會大於數字 128 由於 MATLAB 將字串以其相對應之 ASCII 內碼(即數字形式)儲 存成一列向量,故若對此字串直接進行數值運算,MATLAB 會先將 此字串轉成數值,再進行一般數值向量的運算 其它的資料型態與繪圖型態 T.-M.Huang T.-M.Huang

class 或 ischar 指令: 判斷某一個變數是否為字串 字串的判斷 class 或 ischar 指令: 判斷某一個變數是否為字串 >> chinese = '今日事,今日畢'; >> out1 = class(chinese) out1 = char >> chinese = '今日事,今日畢'; >> out1 = ischar(chinese) out1 = 1 >> chinese = '今日事,今日畢'; >> x = chinese+1; >> out2 = ischar(x) out2 = 其它的資料型態與繪圖型態 T.-M.Huang

字串轉換函式 double 指令: 檢視字串變數的儲存內容(即 ASCII 內碼) char 指令: 將 ASCII 內碼轉回字串形式 >> sentence = 'I''ve got a date!'; >> sentenceAscii = double(sentence) sentenceAscii = Columns 1 through 14 73 39 118 101 32 103 111 116 32 97 32 100 97 116 Columns 15 through 16 101 33 char 指令: 將 ASCII 內碼轉回字串形式 >> sentence2 = char(sentenceAscii) sentence2 = I've got a date! 其它的資料型態與繪圖型態 T.-M.Huang T.-M.Huang

一個變數來儲存多個字串 使用二維字元陣列(Two Dimensional Character Arrays);必須先確認每個字串(即每一橫列)的長度一樣,否則就必須在短字串結尾補上空白字元。 >> departments = ['ee '; 'cs '; 'econ'] % 注意空白字元的使用 departments = ee cs econ 用char 指令儲存多個字串 >> departments = char('ee', 'cs', 'econ') % 注意「()」及「,」的使用 departments = ee cs econ 其它的資料型態與繪圖型態 T.-M.Huang

一個變數來儲存多個字串(cont.) 從二維字元陣列抽取出字串時,切記要使用deblank 指令來移除尾部的空白字元 >> departments = char('ee', 'cs', 'econ'); >> dept1 = departments(1,:) dept1 = ee >> len1 = length(dept1) len1 = 4 >> dept2 = deblank(dept1) dept2 = ee >> len2 = length(dept2) len2 = 2 其它的資料型態與繪圖型態 T.-M.Huang

整 合 字 串 strcat可以水平連接兩個以上的字串。這個函式將清除字串後 面的空白字元,但保留字串間的空白字元。 >> result = strcat(‘String 1 ’, ‘String 2’) result = String 1String 2 (注意第一個字串後面之空白字元已清除) FileName1 = 'fz_cn_rate_d6_L'; for Fm = 0:5 FileName = strcat(FileName1, int2str(Fm)); eval(FileName); end 其它的資料型態與繪圖型態 T.-M.Huang

strvcat可以垂直連接兩個以上的字串,並自動延展字串長度,使其成為合法的二維陣列。 整 合 字 串(cont) strvcat可以垂直連接兩個以上的字串,並自動延展字串長度,使其成為合法的二維陣列。 >> length(result(1,:)) ans = 14 >> length(result(2,:)) >> result = strvcat(‘Long String 1 ’, ‘String 2’) result = Long String 1 String 2 其它的資料型態與繪圖型態 T.-M.Huang

比 較 字 串 strcmp 指令: 用於比較字串內容是否完全相同,不相同回傳0, 相同則回傳1 包含字串前面與字串尾端的空白字元 strcmpi 指令: 用於比較字串內容是否完全相同,但忽略大小 寫的差異 strncmp 指令:用於比較字串的前 n 個字元是否完全相同 strncmpi 指令: 用於比較字串的前 n 個字元是否完全相同,但 忽略大小寫的差異 其它的資料型態與繪圖型態 T.-M.Huang

比 較 字 串(cont.) >> str1 = 'hello'; >> str2 = 'Hello'; >> c = strcmpi(str1, str2) c = 1 >> c = strncmp(str1, str2, 3) >> c = strncmp(str1, str3, 5) >> c = strcmp(str1, str2) c = >> c = strcmp(str1, str3) 其它的資料型態與繪圖型態 T.-M.Huang

在字串裡分類字元 isletter 指令: 決定該字元是否為字母,不是回傳0,則是回傳1 >> mystring = 'Room 23a'; >> a = isletter(mystring) a = 1 1 1 1 0 0 0 1 isspace 指令: 決定該字元是否為空格(空白、移字或是換行) >> b = isspace(mystring) b = 0 0 0 0 1 0 0 0 其它的資料型態與繪圖型態 T.-M.Huang

在字串裡分類字元(cont.) Isstrprop(‘str’,’category’) Description alpha True for those elements of str that are alphanumeric(字母) alphanum True for those elements of str that are alphanumeric(字母或數字) cntrl True for those elements of str that are control characters digit True for those elements of str that are numeric digits lower True for those elements of str that are lowercase letters wspace True for those elements of str that are white-space characters(空白字元) upper True for those elements of str that are uppercase letters xdigit True for those elements of str that are valid hexadecimal digits >> A = isstrprop('abc123def', 'alpha') A = 1 1 1 0 0 0 1 1 1 >> A = isstrprop('abcd1234efgh', 'xdigit') A = 1 1 1 1 1 1 1 1 1 1 0 0 其它的資料型態與繪圖型態 T.-M.Huang

在字串內搜尋並取代字元 findstr 指令:尋找在某一個長字串中的子字串,並傳回其起 始位置 >> s = 'Find the starting indices of the shorter string.'; >> findstr(s, 'the') ans = 6 30 >> findstr('the', s) ans = 6 30 strmatch 指令:用來比對字元,可在二維字元陣列裡找出某 列文字的開始字元,並傳回其文字列編號 >> x = strmatch('max', strvcat('max', 'minimax', 'maximum')) x = 1 3 其它的資料型態與繪圖型態 T.-M.Huang

在字串內搜尋並取代字元(cont.) strrep 指令: 用於字串尋找並代換 >> s = ' This is a simple example.'; >> [token, remain] = strtok(s) token = This remain = is a simple example. >> s1 = 'This is a good example.'; >> str = strrep(s1, 'good', 'great') str = This is a great example. strtok 指令: 根據一給定的分界字元(Delimiting Characters), 將一字串拆解成數個字串,預設分界字元為空白字元 [token, remain] = strtok(string, delim) 其它的資料型態與繪圖型態 T.-M.Huang

在字串內搜尋並取代字元(cont.) 使用strtok 將一個句子拆解成幾個字 input_string = 'ee cs econ stat me'; remainder = input_string; parsed = ''; % 建立一空字元陣列 while (any(remainder)) [chopped, remainder] = strtok(remainder); parsed = strvcat(parsed, chopped); end parsed parsed = ee cs econ stat me 其它的資料型態與繪圖型態 T.-M.Huang

大小寫字母轉換 upper及lower可以將字串裡所有的字元, 完全轉換成字母大寫或字母小寫 >> lower('MathWorks') ans = mathworks >> upper('attention!') ans = ATTENTION! 其它的資料型態與繪圖型態 T.-M.Huang

移除字串裡的空白字元 deblank 指令用來移除尾部的空白字元。 strtrim 指令用來移除字串前或字串後的空白字元。 >> test_string_trim2 = strtrim(test_string) test_string_trim2 = This is a test. >> length(test_string_trim2) ans = 15 >> test_string = ' This is a test. '; >> length(test_string) ans = 21 >> test_string_trim1 = deblank(test_string) test_string_trim1 = This is a test. >> length(test_string_trim1) ans = 18 其它的資料型態與繪圖型態 T.-M.Huang

int2str 指令: 將整數型態的資料轉換成字串資料 數字轉換成字串 int2str 指令: 將整數型態的資料轉換成字串資料 >> int2str(eye(3)) ans = 1 0 0 0 1 0 0 0 1 >> n = 6; >> y = ['case number ' int2str(n)] y = case number 6 >> int2str(2+3) ans = 5 num2str 指令: 將實數轉為字串 A = 9.50034e+003 4.85934e+003 4.56422e+003 2.31115e+003 8.91210e+003 1.85018e+002 >> x = rand(3) * 9999; % Create a 2-by-3 matrix. >> x(3,:) = []; >> A = num2str(x, '%10.5e\n') % Convert to string array. 其它的資料型態與繪圖型態 T.-M.Huang

數字轉換成字串(cont.) mat2str 指令可將矩陣轉換為字串,此字串若再 經由 eval 指令的使用,可再變回原先的矩陣 >> B = mat2str(A) % 將矩陣A轉成字串B B = [1 2 1;3 5 6] >> A2 = eval(B) % 再將字串 B 轉回矩陣 A2 A2 = 1 2 1 3 5 6 >> isequal(A, A2) % 測試 A 和 A2 是否相等 ans = 1 其它的資料型態與繪圖型態 T.-M.Huang

字串轉換成數字 str2double 指令可將字元字串轉換為其所表示的雙倍精度值 sscanf 指令可將字元字串轉換為數值的格式 A = sscanf(s,'%f') A = 2.7183 3.1416 >> a = str2double('123 + 45i') a = 1.2300e+002 +4.5000e+001i sscanf 指令可將字元字串轉換為數值的格式 value = sscanf (string, format) 其它的資料型態與繪圖型態 T.-M.Huang

範例:字串比較函式 步驟 比較兩個字串,如果第一個字串在字典式順序裡小於第二個字串 ,則傳回值-1,如果兩個字串順序相等,則傳回0,如果第一個字 串在字典式順序裡大於第二個字串,則傳回值+1 如果兩字串長度不相等,此函式仍應正常運作,並忽略掉字串尾端的空白字元 步驟 驗證輸入字串 函式需有兩個輸入字元格式的引數 將字串延展成相等的長度 使用strvcat將兩個字串變成一個二維陣列 strings = strvcat( str1, str2 ); 使用關係運算子比對兩字串, 產生含0與1的陣列 從頭到尾比較兩字串的不同之 處,並找出第一個不同的地方 尋找陣列中第一個1,此對應 兩字串第一個差異 根據第一個不同處,傳回對 應的值 其它的資料型態與繪圖型態 T.-M.Huang

驗證輸入字串 將字串延展成 相等的長度 從頭到尾比較兩字串的 不同之處,並找出第一 個不同的地方 locates all nonzero function result = c_strcmp(str1,str2) % Check for a legal number of input arguments. narginchk(2,2); % Check to see if the arguments are strings if ~(ischar(str1) && ischar(str2)) error('Both str1 and str2 must both be strings!') else % Pad strings strings = char(str1,str2); % Compare strings diff = strings(1,:) ~= strings(2,:); if sum(diff) == 0 % Strings match, so return a zero! result = 0; % Find first difference between strings ival = find(diff); if strings(1,ival(1)) > strings(2,ival(1)) result = 1; result = -1; end 驗證輸入字串 將字串延展成 相等的長度 從頭到尾比較兩字串的 不同之處,並找出第一 個不同的地方 locates all nonzero elements of array diff 其它的資料型態與繪圖型態 T.-M.Huang

測試結果 >> result = c_strcmp('String 1', 'String 1') result = >> result = c_strcmp('String 1', 'String 1 ') result = >> result = c_strcmp('String 1', 'String 2') result = -1 >> result = c_strcmp('String 1', 'String 0') result = 1 >> result = c_strcmp('String 1', 'str') result = -1 其它的資料型態與繪圖型態 T.-M.Huang

6-4 其它的資料型態(整數) int8, int16, int32, int64 8、16 、32 、64位元的正負整數 uint8, uint16, uint32, uint64 8、16 、32 、64位元的正整數 在int8資料型態裡的整數範圍為-128到127(總共有256個整數) 在uint8資料型態裡的整數範圍為0到255(總共有256個整數) 在int16的整數範圍為-32768到32767(總共有65536個整數) 在uint16的整數範圍為0到65535(總共有65536個整數) 其它的資料型態與繪圖型態 T.-M.Huang

其它的資料型態(cont.) 150 ??? >> var = int8(3) var = 3 >> whos Name Size Bytes Class Attributes var 1x1 1 int8 >> int8(100)+int8(50) ans = 127 150 ??? 假設整數運算結果 比該資料型態的最 大值還要大,則產 生的結果便是該最 大值,而不是實際 計算得出的值。 >> b = 7.3; >> c = var * b c = 22 >> whos Name Size Bytes Class Attributes b 1x1 8 double c 1x1 1 int8 var 1x1 1 int8 計算中同時有整數值與雙倍精度值,將只產生整數型態的結果。 適用於影像資料處理。 其它的資料型態與繪圖型態 T.-M.Huang

6-5 其它的二維圖形 bar(x,y), barh(x,y) subplot(2,2,3) barh(Y,'stack') title 'Stack' subplot(2,2,4) bar(Y,1.5) title 'Width = 1.5' bar(x,y), barh(x,y) draws a bar for each element in y at locations specified in x, where x is a vector defining the x-axis intervals for the vertical bars Y = round(rand(5,3)*10); subplot(2,2,1) bar(Y,'group') title 'Group' subplot(2,2,2) bar(Y,'stack') title 'Stack' 其它的資料型態與繪圖型態 T.-M.Huang

其它的二維圖形(cont.) compass(x,y) 產生極座標圖,並畫出從座標原點到資料點(x,y)的箭頭。圖形 內的資料點位置,是用直角座標表示,而不是用極座標表示。 Z = eig(randn(20,20)); compass(Z) Z = 1.8023 + 3.7533i 1.8023 - 3.7533i -0.8068 + 3.8624i -0.8068 - 3.8624i -3.5723 + 2.1144i -3.5723 - 2.1144i 2.7566 -0.2786 + 2.6347i -0.2786 - 2.6347i 其它的資料型態與繪圖型態 T.-M.Huang

其它的二維圖形(cont.) pie(x), pie(x, explode) 產生圓形圖,計算每個x值相對於全部的比例,並依此比例畫出 的扇形區域,與其它區域隔開顯示。 x = [1 3 0.5 2.5 2]; explode = [0 1 0 0 0]; pie(x,explode) 其它的資料型態與繪圖型態 T.-M.Huang

其它的二維圖形(cont.) stairs(x,y) 產生階梯圖,每個階梯的中心落在資料點(x,y)上。 x = linspace(-2*pi,2*pi,40); stairs(x,sin(x)) 其它的資料型態與繪圖型態 T.-M.Huang

其它的二維圖形(cont.) stem(x,y) 產生長桿圖,每個資料點(x,y)上有個標記,並且由該點上垂直 畫一條‘桿子’連接到x軸上。 t = linspace(-2*pi,2*pi,10); h = stem(t,cos(t),'fill','--'); 其它的資料型態與繪圖型態 T.-M.Huang

其它的二維圖形(cont.) ezplot(fun) ezplot(fun,[min,max]) plots the expression fun(x) over the default domain -2 < x < 2 ezplot(fun,[min,max]) plots the expression fun(x) over the domain min < x < max >> ezplot('sin(x)/x',[-4*pi 4*pi]) >> title('Plot of sin(x) / x'); >> grid on; 其它的資料型態與繪圖型態 T.-M.Huang

其它的二維圖形(cont.) fplot(fun,limits) fplot(@(x)[tan(x),sin(x),cos(x)], 2*pi*[-1 1 -1 1]) plots fun between the limits specified by limits. limits is a vector specifying the x-axis limits ([xmin xmax]), or the x- and y-axes limits, ([xmin xmax ymin ymax]). 其它的資料型態與繪圖型態 T.-M.Huang

6-6 三維圖形 plot3(x,y,z) 產生三維曲線圖形 二維力學系統的阻尼振盪,x、y表示 在任何給定時間t之系統位置。 x = exp(-0.2*t) .* cos(2*t); y = exp(-0.2*t) .* sin(2*t); plot(x,y,'LineWidth',2); title('\bfTwo-Dimensional Line Plot'); xlabel('\bfx'); ylabel('\bfy'); axis square; grid on; 無法清楚地顯示時間對系統行為的重要性 其它的資料型態與繪圖型態 T.-M.Huang

title('\bfThree-Dimensional Line Plot'); xlabel('\bfx'); x = exp(-0.2*t) .* cos(2*t); y = exp(-0.2*t) .* sin(2*t); plot3(x,y,t,'LineWidth',2); title('\bfThree-Dimensional Line Plot'); xlabel('\bfx'); ylabel('\bfy'); zlabel('\bftime'); grid on; 其它的資料型態與繪圖型態 T.-M.Huang

mesh 和 surf mesh:可畫出立體的「網狀圖」(Mesh Plots) surf:可畫出立體的「曲面圖」(Surface Plots) z = [0 2 1; 3 2 4; 4 4 4; 7 6 8]; mesh(z); xlabel('X 軸 = column index'); ylabel('Y 軸 = row index'); 其它的資料型態與繪圖型態 T.-M.Huang

[x, y] = meshgrid(xstart:xinc:xend, ystart:yinc:yend) meshgrid 的作用是產生 x 及 y (均為向量) 為基準的格子點 (Grid Points),其輸出為 xx 及 yy(均為矩陣),分別代表格子點的 [x, y] = meshgrid(xstart:xinc:xend, ystart:yinc:yend) xx = 3 4 5 6 yy = 5 5 5 5 6 6 6 6 7 7 7 7 8 8 8 8 9 9 9 9 x = 3:6; y = 5:9; [xx, yy] = meshgrid(x, y) 其它的資料型態與繪圖型態 T.-M.Huang

使用 linspace 來產生較密集的資料,以便畫出由 函數形成的立體網狀圖。 x = linspace(-2, 2, 25); % 在 x 軸 [-2,2] 之間取 25 點 y = linspace(-2, 2, 25); % 在 y 軸 [-2,2] 之間取 25 點 [xx, yy] = meshgrid(x, y); % xx 和 yy 都是 25×25 的矩陣 zz = xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz 也是 25×25 的矩陣 mesh(xx, yy, zz); % 畫出立體網狀圖 其它的資料型態與繪圖型態 T.-M.Huang

surf 和 mesh 指令的用法類似。 x = linspace(-2, 2, 25); % 在 x 軸 [-2,2] 之間取 25 點 y = linspace(-2, 2, 25); % 在 y 軸 [-2,2] 之間取 25 點 [xx, yy] = meshgrid(x, y); % xx 和 yy 都是 25×25 的矩陣 zz = xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz 也是 25×25 的矩陣 surf(xx, yy, zz); 其它的資料型態與繪圖型態 T.-M.Huang

shading 若要使表面的顏色產生連續性的變化,可使用shading指令。 >> [x, y, z] = peaks; >> surf(x,y,z) >> shading interp; 為了方便測試立體繪圖,MATLAB 提供了一個 peaks 函數, 可產生一個凹凸有致的曲面,包含了三個局部極大點 (Local Maxima)及三個局部極小點(Local Minima) 其它的資料型態與繪圖型態 T.-M.Huang

等高線圖之繪製 我們可用contour指令來畫出「等高線圖」(Contour Plots)。 >> [x, y, z] = peaks; >> contour(z, 30); % 畫出 30 條等高線 畫出特定高度的等高線。 >> contour(z, [0 2 5]); 欲標明等高線的高度,可用 clabel 指令。 >> [c,handle] = contour(z, [0 2 5]); >> clabel(c, handle); 其它的資料型態與繪圖型態 T.-M.Huang

等高線圖之繪製(cont.) 若欲在等高線之間填入顏色,可用 contourf 指令。 使畫出的等高線對應至正確的 x 及 y 座標 >> [x, y, z] = peaks; >> contour(z, 30); % 畫出 30 條等高線 使畫出的等高線對應至正確的 x 及 y 座標 >> contour(x, y, z,30); % 使用三個輸入 若要將等高線畫在曲面的正下方,可用 surfc 或 meshc 指令。 >> meshc(x, y, z); >> axis tight 其它的資料型態與繪圖型態 T.-M.Huang