黃聰明 min@math.ntnu.edu.tw http://math.ntnu.edu.tw/~min 臺灣師範大學數學系 MATLAB 基本功能介紹 黃聰明 min@math.ntnu.edu.tw http://math.ntnu.edu.tw/~min 臺灣師範大學數學系.

Slides:



Advertisements
Similar presentations
Matlab 教學 Speaker :陳珮妮 Date : 2013/03/14 1. Outline  MATLAB 簡介  算術邏輯運算  Matlab 陣列  Matlab 矩陣 2.
Advertisements

第六讲 MATLAB 语言程序设计 6.1 MATLAB语言的函数的基本结构 6.2 全局、局部变量、子函数与私有目录
第 4 章 PHP 基本語法.
第四章 MATLAB编程基础 4.1 概述 4.2 流程控制 4.3 脚本文件 4.4 函数文件 4.5 M文件调试 4.6 M文件性能分析
MATLAB小结、 经典迭代法、CG.
TQC+ 物件導向程式認證-JAVA.
Introduction to Matlab
Matlab教學 Speaker:林昱志 Date:2012/10/18.
1012 MATLAB 教學 彭奕翔 2013/02/27.
数学软件 Matlab —— 二维平面作图 —— 三维空间作图.
Chapter 4 流程控制.
数值计算的工具—MATLAB 电子计算机技术为应用数学解决实际问题创造了物质条件 。
2010年桂林理工大学数学建模竞赛暑期培训班 MATLAB编程入门培训课程
XI. Hilbert Huang Transform (HHT)
第七讲 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。
Matlab及其应用 鲍文 哈尔滨工业大学 先进动力控制与可靠性研究所
第1章 MATLAB概述 1.1 MATLAB 7.x简介 是Matrix Laboratory的缩写,它将计算、可视化和编程功能于一身,是一个开放的基于矩阵的交互式开发系统。主要用于数学计算、系统建模与仿真、数据分析与可视化等。(Mathworks始创于1984) MATLAB的系统结构.
課程名稱:程式設計 授課老師:________
MATLAB介紹.
范洪源 臺灣師範大學數學系 使用者定義函式 范洪源 臺灣師範大學數學系.
張智星 (Roger Jang) 清大資工系 多媒體檢索實驗室
張智星 清大資工系 補充內容:方煒 台大生機系 小幅修改:吳俊仲 長庚機械系
張智星 清大資工系 補充內容:方煒 台大生機系
實作輔導 日期: 3/11 09:10~16:00 地點:臺北市立大學 臺北市中正區愛國西路一號 (中正紀念堂站7號出口)
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
范洪源 臺灣師範大學數學系 MATLAB 基本功能介紹 范洪源 臺灣師範大學數學系.
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
Matlab教學 Speaker:林昱志 Date:2012/10/25.
1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例
Matlab M檔案 方煒 台大生機系.
第2章 MATLAB矩阵及其运算 2. 1 变量和数据操作 2. 2 MATLAB矩阵 2. 3 MATLAB运算 2. 4 矩阵分析 2
數學與電腦 的初相識 汪群超 個人網址: 變有不可者三,有不可不變者三: 能力未至不可變也、 學識未敷不得變也、 功侯未到不能變也。
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
Application of Matlab Language
第4章 程序控制结构与算法基础.
University of Electronic Science and Technology, China
張智星 清大資工系 多媒體檢索實驗室 第九章: 矩陣的處理與運算 張智星 清大資工系 多媒體檢索實驗室.
程式流程控制 方煒 台大生機系.
Matlab基础介绍 Matlab 简介 Matlab 的安装与启动 Matlab 编程基础 Matlab 在数字信号处理课程中的应用.
黃聰明 國立臺灣師範大學數學系 MATLAB 基本功能介紹 黃聰明 國立臺灣師範大學數學系
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
引 言.
邏輯關係運算 == 等於 & 且 (logical and) ~= 不等於 | 或 (logical or) < 小於
Introduction to MATLAB
第九章: 矩陣的處理與運算 張智星 (Roger Jang)
范洪源 臺灣師範大學數學系 分支宣告與程式設計 范洪源 臺灣師範大學數學系.
授課教授:張寶基 助教:梁凱雯 郭千豪 音視訊處理實驗室 2014 / 9 / 30
MATLAB 程式設計入門篇 初探MATLAB
分支宣告與程式設計 黃聰明 國立臺灣師範大學數學系
MATLAB介绍 Matlab基本命令介绍 Matlab矩阵运算 Matlab控制流 Matlab图像处理工具箱 实习题讲解.
Peking University SAS Club
第2章 MATLAB程序设计 编者.
数学建模 江西财经大学 数学与管理决策系 制作:华长生 华长生制作.
Mechanics Exercise Class Ⅰ
第二单元 第2课 Matlab程序控制结构 1.顺序结构 2.选择结构 3.循环结构.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
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在行列式和矩阵中的应用 授课教师:杨梦云.
MATLAB 程式設計入門篇 初探MATLAB
第二章 MATLAB编程与作图 2.1 程序设计 2.2 作图 2.3 在线帮助和文件管理 2.4 习题 2019年4月23日
统计软件应用 2 主讲人 陶育纯 SPSS 统计软件应用 2 主讲人 陶育纯 教案.
Introduction to Matlab
MATLAB 程式設計 程式除錯 方煒 台大生機系.
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
MATLAB 結構化財務程式之撰寫 MATLAB財務程式實作應用研習 主題五 資管所 陳竑廷
第二单元 第3课 Matlab命令执行方式 1.Matlab命令执行方式 2.程序调试.
数学是知识的工具,亦是其它知识工具的泉源。 ——勒内·笛卡尔
MATLAB 程式設計入門篇 程式除錯 張智星 (Roger Jang)
Presentation transcript:

黃聰明 min@math.ntnu.edu.tw http://math.ntnu.edu.tw/~min 臺灣師範大學數學系 MATLAB 基本功能介紹 黃聰明 min@math.ntnu.edu.tw http://math.ntnu.edu.tw/~min 臺灣師範大學數學系

1.1 變數和陣列 變數 變數名稱 常用變數型態 double char 使用者設定名稱的陣列,在實體上是由一塊記憶體區域所組成。 第一個字必須是文字,其後可用文字、數字及底線任意組合。 不可超過63個字元 大小寫字母有別 常用變數型態 擁有15到16個有效位數 可處理實數、虛數和複數 double char 內定i和j代表虛數 佔64位元 Var = 10 + 10i; 基本功能介紹 T.-M. Hwang

1.2 MATLAB 變數的初始化 三種用來初始化變數的方式 從鍵盤輸入資料給變數 從檔案讀取資料 利用宣告的方式,指定資料給變數 var = expression var = 40i; var2 = var/5; array = [ 1 2 3 4 ]; x = 1; y = 2; 基本功能介紹 T.-M. Hwang

特殊符號(I) 分號(;) 冒號(:) first:incr:last 轉置transpose(’) 基本功能介紹 T.-M. Hwang

特殊符號(II) 百分比符號(%) 程式中加入註解(Comments) >> y = (5*2+3.5)/5; % 將運算結果儲存在變數 y,但不用顯示於螢幕 >> z = y^2 % 將運算結果儲存在變數 z,並顯示於螢幕 z = 7.2900 基本功能介紹 T.-M. Hwang

特殊用途矩陣 指令 說明 zeros(m, n) 產生維度為 m×n ,構成元素全為 0 的矩陣 ones(m, n) eye(n) 產生維度為 n×n ,對角線的各元素全為 1 ,其他各元素全為 0 的單位矩陣 pascal(m, n) 產生維度為 m×n 的 Pascal 矩陣 vander(m, n) 產生維度為 m×n 的 Vandermonde 矩陣 hilb(n) 產生維度為 n×n 的 Hilbert 矩陣 rand(m, n) 產生 [0, 1] 均勻分佈的亂數矩陣,其維度為 m×n randn(m, n) 產生 µ = 0, σ= 1 的正規分佈亂數矩陣,其維度為 m×n magic(n) 產生維度為 n×n 的魔方陣,其各個直行、橫列及兩對角線的元素和都相等 基本功能介紹 T.-M. Hwang

從鍵盤輸入初始化變數 浮點數資料 30 字元字串型態 基本功能介紹 T.-M. Hwang

1.3 多維陣列與子陣列 在 MATLAB 的資料型態中,向量可視 為一維陣列,矩陣可視二維陣列,對於 維度(Dimensions)超過 1 的陣列則均可 視為「多維陣列」(Multidimesional Arrays,簡稱 N-D Arrays)。 基本功能介紹 T.-M. Hwang

矩陣的索引或下標 (I) A(i, j) i 與 j 即是此元素的下標(Subscript)或索引(Index) 第i橫列、第j直行的元素 可以使用一維或二維下標來存取矩陣 A(i, j) 和 A(i+(j-1)*m) 是完全一樣的~m為矩陣A的列數 所有矩陣的內部表示法都是以直行為主的一維向量 基本功能介紹 T.-M. Hwang

矩陣的索引或下標 (II) A = A(1:5,5) A(:,5) A(21;25) A(2,3) A(12) A(1:5,end) 4 1 10 6 11 16 2 21 8 7 9 12 17 22 3 5 13 18 23 14 19 24 15 20 25 A(1:5,5) A(:,5) A(21;25) A = A(2,3) A(12) A(1:5,end) A(:,end) A(21;end) A(4:5,2:3) A([ 9 14; 10 15 ]) 基本功能介紹 T.-M. Hwang

1.4 特殊的數值 函式 目 的 pi 代表 到15位有效數字的值 i, j 代表 的值 inf 代表無窮大,通常是除以0的結果 Nan 目 的 pi 代表 到15位有效數字的值 i, j 代表 的值 inf 代表無窮大,通常是除以0的結果 Nan `不是數字’,是由未定義的數學運算而來 eps 電腦上兩個數字間的最小差異 ans 用來儲存一個敘述式的結果 基本功能介紹 T.-M. Hwang

1.5 顯示輸出資料 指令格式 結 果 舉 例 format short 顯示4位小數(預設值) 12.3457 format long 結 果 舉 例 format short 顯示4位小數(預設值) 12.3457 format long 顯示14位小數 12.345678901234567 format short e 顯示5個數字加冪次方 1.2346e+001 format short g 總共顯示5個數字(可加或不加冪次方) 12.346 format long e 顯示15位小數字加冪次方 1.234567890123457e+001 format long g 總共顯示15個數字(可加或不加冪次方) 12.3456789012346 format hex 16位元進位格式 4028b0fcd32f707a 基本功能介紹 T.-M. Hwang

disp num2str 轉換數字成字串 int2str 轉換整數成字串 >> str = [' The value of pi = ' , num2str(pi)]; >> disp(str); The value of pi = 3.1416 num2str 轉換數字成字串 >> FileName1 = 'rslt_w'; >> FileName = strcat(FileName1, int2str(10)) FileName = rslt_w10 int2str 轉換整數成字串 基本功能介紹 T.-M. Hwang

fprintf 格式化輸出 fprintf(format, data) 一個或多個陣列變數 字串:描述輸出資料的方式 >> fprintf('The value of pi is %f \n', pi) The value of pi is 3.141593 >> fprintf('The value of pi is %6.2f \n', pi) The value of pi is 3.14 基本功能介紹 T.-M. Hwang

Example/conv_rate/conv_ratio.m 格式字串 說 明 %d 以指數格式顯示數值 %e %f 以浮點數格式顯示數值 %g 以浮點數或指數格式顯示數值,由何者較短為優先顯示 \n 跳到新的一行 基本功能介紹 T.-M. Hwang

1.6 資料檔案 save load 把工作區的資料存進一個磁碟檔案中 把磁碟檔案中的資料存進工作區 save filename var1 var2 var3 save 把工作區的資料存進一個磁碟檔案中 檔案延伸檔名為 “.mat” load 把磁碟檔案中的資料存進工作區 load filename 基本功能介紹 T.-M. Hwang

1.7 純量與陣列運算 variable_name = expression; ii = ii + 1; 計算等號右邊敘述式的結果並將其儲存於左邊變數內 運算方法 MATLAB 形式 加法 a + b 減法 a - b 乘法 a * b 除法 a / b 冪次方 a^b 基本功能介紹 T.-M. Hwang

陣列與矩陣運算 矩陣的加減與一般純量(Scalar)的加減類似 相加或相減的矩陣必需具有相同的維度 >> B = [1 3 2 4]; >> C = A + B C = 13 37 58 24 矩陣與純量可以直接進行加減,MATLAB 會直接將加減應用到每一個元素 >> A = [1 2 3 2 1] + 5 A = 6 7 8 7 6 基本功能介紹 T.-M. Hwang

矩陣的乘法與除法 純量對矩陣的乘或除,可比照一般寫法 >> A = [123 , 442]; >> C = A/3 >> B = 2*A C = B = 41.0000 147.3333 246 884 欲進行矩陣相乘,必需確認第一個矩陣的直行數目( Column Dimension) 必需等於第二個矩陣的橫列數目(Row Dimension) >> A = [1; 2]; >> B = [3, 4, 5]; >> C = A * B C = 3 4 5 6 8 10 矩陣的除法,常藉由反矩陣或解線性方程式來達成 基本功能介紹 T.-M. Hwang

矩陣的左、右除法 A\b:矩陣除法由 inv(A)*b 來定義,其中inv(A) 為A的反矩陣 a\B:矩陣除法由 a*inv(B) 來定義 >> y = b' / A y = -0.0333 0.4667 -0.0333 >> e = A * x - b e = 1.0e-015 * -0.4441 >> A = magic(3) A = 8 1 6 3 5 7 4 9 2 >> b = [1; 2; 3]; >> x = A \ b x = 0.0500 0.3000 >> f = y * A - b' f = 1.0e-015 * 0 0.4441 0 a\B:矩陣除法由 a*inv(B) 來定義 基本功能介紹 T.-M. Hwang

矩陣的次方運算 矩陣的次方運算,可由「^」來達成,但矩陣 必需是方陣,其次方運算才有意義 * 前後不能有任何空格 >> A = magic(3); >> B = A^2 B = 91 67 67 67 91 67 67 67 91 在「*」,「/」及「^」之前加上一個句點,MATLAB 將會執行矩陣內「元素對元素」(Element-by-element) 的運算 >> A = [12; 45]; >> B = [2; 3]; >> C = A.*B C = 24 135 >> C = A. * B ??? C = A. * B | Error: Unexpected MATLAB operator. >> E = A.^2 E = 144 2025 >> D = A./B D = 6 15 基本功能介紹 T.-M. Hwang

轉置和「共軛轉置」矩陣 複數矩陣 z,其「共軛轉置」矩陣 (Conjugate Transpose) 可表示成矩陣 z' 想得到任何矩陣 z 的轉置(Transpose),則可表示成矩陣 z. ' 若 z 為實數,則 z' 和 z.' 的結果是一樣的 基本功能介紹 T.-M. Hwang

2.1 邏輯資料型態 邏輯資料型態 關係運算子 邏輯運算子 true false 運算子 說明 == 等於 ~= 不等於 > 大於 >= 大於或等於 < 小於 <= 小於或等於 運算子 說明 & AND && 快速求值的AND | OR || 快速求值的OR xor 互斥OR ~ NOT 分支宣告與程式設計 T.-M. Hwang

2.2 分支(Branching Command) 條件指令 if-else switch - case - otherwise if expression statements elseif expression statements else statements end switch switch_expr case case_expr, statements case {case_expr1, case_expr2,...} statements ... otherwise, statements end 分支宣告與程式設計 T.-M. Hwang

範例:一元二次方程式 輸出二次方程式的根 輸入係數a, b, c 不同的實數根 重複的實數根 複數根 分支宣告與程式設計 T.-M. Hwang

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, depending on the value of the discriminant if discriminant > 0 % there are two real roots, so... x1 = ( -b + sqrt(discriminant) ) / ( 2 * a ); x2 = ( -b - sqrt(discriminant) ) / ( 2 * a ); disp ('This equation has two real roots:'); fprintf ('x1 = %f\n', x1); fprintf ('x2 = %f\n', x2); elseif discriminant == 0 % there is one repeated root, so... x1 = ( -b ) / ( 2 * a ); disp ('This equation has two identical real roots:'); fprintf ('x1 = x2 = %f\n', x1); else % there are complex roots, so ... real_part = ( -b ) / ( 2 * a ); imag_part = sqrt ( abs ( discriminant ) ) / ( 2 * a ); disp ('This equation has complex roots:'); fprintf('x1 = %f +i %f\n', real_part, imag_part ); fprintf('x1 = %f -i %f\n', real_part, imag_part ); end 分支宣告與程式設計 T.-M. Hwang

範例:根據月份來判斷其季別(I) 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); 分支宣告與程式設計 T.-M. Hwang

3.1 while 迴圈 迴圈 for variable = expr statements end while expression 確定重複執行之次數 不確定重複執行次數 迴圈 T.-M. Hwang

範例:統計分析 給與 每個樣品均大於或等於零,但個數未知 n個樣品 計算 :算術平均數 輸入一小於零之樣品值,做為樣品輸入之結束。 :標準差 while :算術平均數 :標準差 輸入一小於零之樣品值,做為樣品輸入之結束。 迴圈 T.-M. Hwang

x = input('Enter first value: '); if ( x < 0 ) % Read in first value x = input('Enter first value: '); if ( x < 0 ) fprintf('At least one nonnegative value must be entered!'); else n = 0; sum_x = 0; sum_x2 = 0; % While Loop to read input values. while x >= 0 % Accumulate sums. n = n + 1; sum_x = sum_x + x; sum_x2 = sum_x2 + x^2; % Read in next value x = input('Enter next value: '); end % Calculate the mean and standard deviation x_bar = sum_x / n; std_dev = sqrt( (n * sum_x2 - sum_x^2) / (n * (n-1)) ); % Tell user. fprintf('The mean of this data set is: %f\n', x_bar); fprintf('The standard deviation is: %f\n', std_dev); fprintf('The number of data points is: %f\n', n); 迴圈 T.-M. Hwang

3.2 for 迴圈 for ii = 1:4 statement 1 … statement n end 1 2 3 4 ii = 1 T.-M. Hwang

for ii = 1:2:6 statement 1 … statement n end 1 3 5 ii = 1 statement 1 迴圈 T.-M. Hwang

範例—計算某年的第幾天(I) 輸入某年某月某日,計算出相對於當年的第幾天 mod(year,400) = 0 if mod(year,400) == 0 leap_day = 1; elseif mod(year,100) == 0 leap_day = 0; elseif mod(year,4) == 0 else end 西元年能被400除盡,便是閏年 西元年能被100除盡,但不能被400除盡者,不是閏年 西元年能被4除盡,但不能被100除盡者,是閏年 其它西元年,皆不是閏年 mod(year,100) = 0 mod(year,4) = 0 迴圈 T.-M. Hwang

範例—計算某年的第幾天(II) day_of_year = day; for ii = 1:month-1 % Add days in months from January to last month switch (ii) case {1,3,5,7,8,10,12}, day_of_year = day_of_year + 31; case {4,6,9,11}, day_of_year = day_of_year + 30; case 2, day_of_year = day_of_year + 28 + leap_day; end 迴圈 T.-M. Hwang

預先分配陣列與向量化陣列 n = 20000; tic; for ii = 1:n square(ii) = ii^2; end fprintf('Total cpu time = %g \n', toc); n = 20000; tic; square = zeros(1,n); for ii = 1:n square(ii) = ii^2; end fprintf('Total cpu time = %g \n', toc); Total cpu time = 1.60449 Total cpu time = 0.00066042 n = 20000; tic; ii = 1:n; square = ii.^2; fprintf('Total cpu time = %g \n', toc); Total cpu time = 0.00034393 迴圈 T.-M. Hwang

4.1 MATLAB函式介紹 function [out1, out2, ...] = funname(in1, in2, ...) statements 輸出引數 函式名稱 輸入引數 儲存之檔案名稱須與函式名稱一樣 使用者定義函式 T.-M. Hwang

計算點(x1,y1)與點(x2,y2)的距離 function distance = dist2(x1, y1, x2, y2) %DIST2 Calculate the distance between two points % Function DIST2 calculates the distance between % two points (x1,y1) and (x2,y2) in a Cartesian % coordinate system. % % Calling sequence: % distance = dist2(x1, y1, x2, y2) % Define variables: % x1 -- x-position of point 1 % y1 -- y-position of point 1 % x2 -- x-position of point 2 % y2 -- y-position of point 2 % distance -- Distance between points % Calculate distance. distance = sqrt((x2-x1).^2 + (y2-y1).^2); end % function dist2 儲存之檔案名稱為 dist2.m H1 comment line >> lookfor distance DIST2 Calculate the distance between two points >> help dist2 DIST2 Calculate the distance between two points Function DIST2 calculates the distance between two points (x1,y1) and (x2,y2) in a Cartesian coordinate system. Calling sequence: distance = dist2(x1, y1, x2, y2) 使用者定義函式 T.-M. Hwang

呼叫 dist2 % Get input data. disp('Calculate the distance between two points:'); ax = input('Enter x value of point a: '); ay = input('Enter y value of point a: '); bx = input('Enter x value of point b: '); by = input('Enter y value of point b: '); % Evaluate function result = dist2 (ax, ay, bx, by); % Write out result. fprintf('The distance between points a and b is %f\n',result); function distance = dist2(x1, y1, x2, y2) 使用者定義函式 T.-M. Hwang

4.2 MATLAB的變數傳遞方式:按值傳遞 MATLAB程式使用pass-by-value的方式, 進行程式與函式間的溝通聯絡,當程式 呼叫函式時,MATLAB便複製實質引數, 並傳遞這些實質引數的備份提供函式使 用。 使用者定義函式 T.-M. Hwang

function out = sample(a, b) fprintf('In sample: a = %f, b = %f %f\n',a,b); a = b(1) + 2*a; b = a .* b; out = a + b(1); 輸入引數值改變 a = 2; b = [6 4]; fprintf('Before sample: a = %f, b = %f %f\n',a,b); out = sample(a,b); fprintf('After sample: a = %f, b = %f %f\n',a,b); fprintf('After sample: out = %f\n',out); >> test_sample Before sample: a = 2.000000, b = 6.000000 4.000000 In sample: a = 2.000000, b = 6.000000 4.000000 In sample: a = 10.000000, b = 60.000000 40.000000 After sample: a = 2.000000, b = 6.000000 4.000000 After sample: out = 70.000000 使用者定義函式 T.-M. Hwang

4.3 選擇性的引數 nargin:決定函式實際輸入變數的個數 nargout:決定函式實際輸出變數的個 數 nargchk:假如用來呼叫函式的引數太 少或太多,這個函式將傳回一個標準的 錯誤訊息 error:顯示錯誤的訊息,並放棄執行 產生錯誤的函式 warning:顯示警告的訊息,並繼續執 行函式 使用者定義函式 T.-M. Hwang

使用語法 message = nargchk(min_args, max_args, num_args); 引數的最小數目 引數的最大數目 實際引數的數目 error(‘msg’); 可與nargchk互相搭配,當程式發生錯誤時,便會產生一個錯誤訊息 錯誤訊息的字元字串 warning(‘msg’); 使用者定義函式 T.-M. Hwang

範例 輸入直角座標(x,y),轉換成極座標 輸出 如果只輸入一個引數,則函式假設y值為0 如果呼叫此函式的敘述式只有一個輸出引數,則 傳回距離值 angle : angle in degree mag :magnitude if nargin < 2 y = 0; end if nargout == 2 angle = atan2(y,x) * 180 / pi; end 使用者定義函式 T.-M. Hwang

>> [mag angle] = polar_value ??? Error using ==> polar_value 1 angle = function [mag, angle] = polar_value(x,y) %POLAR_VALUE Converts (x,y) to (r,theta) % Check for a legal number of input arguments. msg = nargchk(1,2,nargin); error(msg); % If the y argument is missing, set it to 0. if nargin < 2 y = 0; end % a warning message. if x == 0 & y == 0 msg = 'Both x and y are zero: angle is meaningless!'; warning(msg); % Now calculate the magnitude. mag = sqrt(x.^2 + y.^2); % If the second output argument is present, calculate % angle in degrees. if nargout == 2 angle = atan2(y,x) * 180/pi; >> [mag angle] = polar_value(0,0) Warning: Both x and y are zero: angle is meaningless! > In polar_value at 32 mag = angle = >> [mag angle] = polar_value(1,-1) mag = 1.4142 angle = -45 >> [mag angle] = polar_value ??? Error using ==> polar_value Not enough input arguments. >> [mag angle] = polar_value(1,-1,1) ??? Error using ==> polar_value Too many input arguments. 使用者定義函式 T.-M. Hwang

4.4 含函式的函式 是一種輸入引數包含其他函式名稱的函式,而這些傳入函 式名稱的函式,會在含函式的函式執行過程中,被呼叫來 使用。 fzero:內建函式,找出只含一個變數函式之零點 >> fzero('cos',[0 pi]) ans = 1.5708 >> fzero('exp(x)-2',[0 pi]) ans = 0.6931 >> fzero( @exp_2,[0 pi] ) ans = 0.6931 function val = exp_2(x) val = exp(x) - 2; >> fzero('exp_2' ,[0 pi] ) ans = 0.6931 使用者定義函式 T.-M. Hwang

內建函式eval eval(string) >> x = eval('sin(pi/4)') x = 0.7071 >> str = ['exp(' num2str(x) ') - 1']; >> res = eval(str) res = 1.7183 s = load August1.mat load August2.mat load August3.mat - etc. - for d=1:10 s = ['load August' int2str(d) '.mat'] eval(s) end 使用者定義函式 T.-M. Hwang

內建函式feval feval(fun,value) >> feval('exp_2' , 0) ans = -1 feval 會針對M檔案中的(fun)函式,在特定輸入值(value)下計算其函式值 >> feval( @exp_2, 0) ans = -1 >> feval('sin',pi/4) ans = 0.7071 function val = exp_2(x) val = exp(x) - 2; 使用者定義函式 T.-M. Hwang

6.1 繪圖功能簡介 title('Plot of y = x.^2-10.*x+15') x = 0:0.1:10; plot(x,y); ylabel('y'); grid on; grid off; xlabel('x'); 基本功能介紹 T.-M. Hwang

多重線條繪圖 x = 0:pi/100:2*pi; y1 = sin(2*x); y2 = 2*cos(2*x); plot( x, y1, x, y2 ); plot(x, y1); hold on; plot(x, y2); hold off 基本功能介紹 T.-M. Hwang

線條顏色、形式、資料標記及說明文字(I) plot(x, y1); hold on; plot(x, y2); hold off legend('sin(2x)','2cos(2x)','Location','NorthWest'); plot(x, y1,'ro-.' ); hold on; plot(x, y2,'gx:'); hold off text(3.3, 1.5, ‘2cos(2x)') text(1.5, 0.5, 'sin(2x)') 基本功能介紹 T.-M. Hwang

線條顏色、形式、資料標記及說明文字(II) x = 0:pi/100:2*pi; y1 = sin(2*x); y2 = 2*cos(2*x); plot(x, y1,'ro-.' ); hold on; plot(x, y2,'gx:'); hold off legend('sin(2x)','2cos(2x)','Location','NorthWest'); text(1.5, 0.5, 'sin(2x)') text(3.3, 1.5, '2cos(2x)') set(gca,'xtick',[0 1/2*pi pi 3/2*pi 2*pi]) set(gca,'xticklabel',{'0','1/2 pi','pi','3/2 pi','2 pi'}) 基本功能介紹 T.-M. Hwang

額外的繪圖功能 x = -2.5*pi:pi/100:2.5*pi; y1 = sin(2*x); y2 = 2*cos(2*x); plot(x, y1,'ro-.'); hold on plot(x, y2, 'gx:'); hold off legend('sin(2x)','2cos(2x)','Location','NorthWest'); text(1.5, 0.5, 'sin(2x)') text(3.3, 1.5, '2cos(2x)') xlabel('x'); ylabel('y'); title('Plot figure of sin(2x) and 2cos(2x)'); set(gca,'xtick',[-2*pi -pi 0 pi 2*pi]) set(gca,'xticklabel',{'-2 pi','- pi','0','pi','2 pi'}) 分支宣告與程式設計 T.-M. Hwang

axis([-2*pi 2*pi -2.5 2.5]) 分支宣告與程式設計 T.-M. Hwang

axis square axis equal axis normal 分支宣告與程式設計 T.-M. Hwang

axis off axis on 分支宣告與程式設計 T.-M. Hwang

x = -2.5*pi:pi/100:2.5*pi; y1 = sin(2*x); y2 = 2*cos(2*x); figure(1) plot(x, y1,'ro-.'); title('plot sin(2x)'); figure(2) plot(x, y2, 'gx:'); title('plot 2 cos(2x)'); 分支宣告與程式設計 T.-M. Hwang

subplot(m,n,p) x = -2.5*pi:pi/100:2.5*pi; y1 = sin(2*x); y2 = 2*cos(2*x); z1 = exp(x/10); z1 = z1.*y2; z2 = y1.*y2; subplot(2,2,1) plot(x, y1,'r'); title('plot sin(2x)'); subplot(2,2,2) plot(x, y2, 'g'); title('plot 2 cos(2x)'); subplot(2,2,3) plot(x, z1, 'b'); title('plot 2cos(2x)exp(x/10)'); subplot(2,2,4) plot(x, z2, 'm'); title('plot 2cos(2x)sin(2x)'); 分支宣告與程式設計 T.-M. Hwang