MATLAB基礎(chǔ)教程(第五版)全套教學(xué)課件_第1頁(yè)
MATLAB基礎(chǔ)教程(第五版)全套教學(xué)課件_第2頁(yè)
MATLAB基礎(chǔ)教程(第五版)全套教學(xué)課件_第3頁(yè)
MATLAB基礎(chǔ)教程(第五版)全套教學(xué)課件_第4頁(yè)
MATLAB基礎(chǔ)教程(第五版)全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩257頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2022年7月14日第1頁(yè)第1章 MATLAB R2020b簡(jiǎn)介 MATLAB基礎(chǔ)教程(第五版)(微課版) 教學(xué)目標(biāo)教學(xué)重點(diǎn)教學(xué)內(nèi)容2022年7月14日第2頁(yè)教學(xué)目標(biāo)了解 MATLAB 語言的基本功能和特點(diǎn)了解 MATLAB 的基本界面了解 MATLAB 的路徑搜索2022年7月14日第3頁(yè)教學(xué)重點(diǎn)了解 MATLAB 語言的基本功能了解 MATLAB 語言的基本特點(diǎn)熟悉 MATLAB 的基本界面了解 MATLAB 的路徑搜索2022年7月14日第4頁(yè)教學(xué)內(nèi)容MATLAB 簡(jiǎn) 介MATLAB R2020b 用戶界面MATLAB R2020b的路徑搜索 2022年7月14日第5頁(yè)MATLAB 概述

2、(1/3)MATLAB作為一種高級(jí)科學(xué)計(jì)算軟件,是進(jìn)行算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的交互式應(yīng)用開發(fā)環(huán)境。世界上許多科研工作者都在使用MATLAB產(chǎn)品來加快他們的科研進(jìn)程,縮短數(shù)據(jù)分析和算法開發(fā)的時(shí)間,研發(fā)出更加先進(jìn)的產(chǎn)品和技術(shù)。相對(duì)于傳統(tǒng)的 C、C+或者Fortran語言,MATLAB提供了高效快速解決各種科學(xué)計(jì)算問題的方法。目前,MATLAB產(chǎn)品已經(jīng)被廣泛認(rèn)可為科學(xué)計(jì)算領(lǐng)域內(nèi)的標(biāo)準(zhǔn)軟件之一。2022年7月14日第6頁(yè)MATLAB 概述(2/3)MATLAB可以被廣泛地應(yīng)用于不同領(lǐng)域,如信號(hào)與圖像處理、控制系統(tǒng)設(shè)計(jì)與仿真、通信系統(tǒng)設(shè)計(jì)與仿真、測(cè)量測(cè)試與數(shù)據(jù)采集、金融數(shù)理分析以及生

3、物科學(xué)等。在MATLAB中內(nèi)嵌了豐富的數(shù)學(xué)、統(tǒng)計(jì)和工程計(jì)算函數(shù),使用這些函數(shù)進(jìn)行問題的分析解答,無論是問題的提出還是結(jié)果的表達(dá)都采用工程師習(xí)慣的數(shù)學(xué)描述方法,這一特點(diǎn)使MATLAB成為了數(shù)學(xué)分析、算法開發(fā)及應(yīng)用程序開發(fā)的良好環(huán)境。MATLAB是MathWorks產(chǎn)品家族中所有產(chǎn)品的基礎(chǔ)。附加的工具箱擴(kuò)展MATLAB基本環(huán)境用于解決特定領(lǐng)域的工程問題。2022年7月14日第7頁(yè)MATLAB 概述(3/3)MATLAB有以下幾個(gè)特點(diǎn)。高級(jí)科學(xué)計(jì)算語言。代碼、數(shù)據(jù)文件的集成管理環(huán)境。算法設(shè)計(jì)開發(fā)的交互式工具。用于線性代數(shù)、統(tǒng)計(jì)、傅立葉分析、濾波器設(shè)計(jì)、優(yōu)化和數(shù)值計(jì)算的基本數(shù)學(xué)函數(shù)。2-D和3-D數(shù)據(jù)

4、可視化。創(chuàng)建自定義工程師圖形界面的工具。與第三方算法開發(fā)工具 C/C+、FORTRAN、Java、COM、Microsoft Excel 集成開發(fā)基于 MATLAB的算法。 2022年7月14日第8頁(yè)MATLAB 的基本功能(1/2)MATLAB將高性能的數(shù)值計(jì)算和可視化功能集成,并提供了大量的內(nèi)置函數(shù),從而被廣泛地應(yīng)用于科學(xué)計(jì)算、控制系統(tǒng)和信息處理等領(lǐng)域的分析、仿真和設(shè)計(jì)工作,而且利用MATLAB產(chǎn)品的開放式結(jié)構(gòu),可以很容易地對(duì)MATLAB的功能進(jìn)行擴(kuò)充,從而在不斷深化對(duì)問題認(rèn)識(shí)的同時(shí),不斷完善MATLAB產(chǎn)品以提高產(chǎn)品自身的競(jìng)爭(zhēng)能力。2022年7月14日第9頁(yè)MATLAB 的基本功能(2/

5、2) 數(shù)學(xué)計(jì)算功能 圖形化顯示功能 M語言編程功能 編譯功能 圖形用戶界面開發(fā)功能 Simulink建模仿真功能自動(dòng)代碼生成功能2022年7月14日第10頁(yè)MATLAB 的更新(1/1) MATLAB R2020b更新了多個(gè)產(chǎn)品模塊,添加了新的特性,包括 MATLAB、Simulink和 Polyspace產(chǎn)品的新功能,以及對(duì) 77 種其他產(chǎn)品的更新和補(bǔ)丁修復(fù)。 使用 Deep Learning HDL Toolbox 實(shí)現(xiàn)面向 FPGA 和 SoC 進(jìn)行深度學(xué)習(xí)網(wǎng)絡(luò)原型開發(fā)和部署,借助 Lidar Toolbox 設(shè)計(jì)、分析和測(cè)試激光雷達(dá)處理系統(tǒng),利用 RoadRunner Scene Bu

6、ilder 自動(dòng)從高清地圖生成三維道路模型,通過 UAV Toolbox 設(shè)計(jì)、仿真和部署無人機(jī)應(yīng)用。2022年7月14日第11頁(yè)啟動(dòng) MATLAB R2020b (1/1) 選擇“開始”|“所有程序”| MATLAB| R2020b | MATLAB R2020b命令,或者直接雙擊桌面上的MATLAB圖標(biāo),啟動(dòng) MATLAB R2020b。2022年7月14日第12頁(yè)MATLAB R2020b的主界面(1/1) 當(dāng)前目錄窗口快捷按鈕編輯器窗口搜索欄帶狀工具欄當(dāng)前目錄路徑文件詳細(xì)信息窗口工作區(qū)窗口命令提示符命令窗口2022年7月14日第13頁(yè)MATLAB R2020b的帶狀工具欄(1/3)20

7、22年7月14日第14頁(yè)MATLAB R2020b的帶狀工具欄(2/3)2022年7月14日第15頁(yè)MATLAB R2020b的帶狀工具欄(3/3)2022年7月14日第16頁(yè)MATLAB R2020b的窗口命令窗口命令歷史記錄窗口工作區(qū)窗口當(dāng)前目錄窗口2022年7月14日第17頁(yè)MATLAB 的當(dāng)前路徑查看 MATLAB當(dāng)前路徑的方式有兩種:查看工具欄中的當(dāng)前路徑欄,或者在命令窗口中輸入查看命令。 cdD:Program FilesMATLABR2020bbin用戶可以通過工具欄中的當(dāng)前路徑工具改變當(dāng)前路徑。2022年7月14日第18頁(yè)MATLAB 的路徑搜索 (1/2)路徑設(shè)置選擇MATL

8、AB窗口中的“主頁(yè)”|“環(huán)境” |“設(shè)置路徑”命令,打開路徑搜索對(duì)話框。用戶可以單擊“添加文件夾”或者“添加并包含子文件夾”按鈕添加選中目錄或者添加選中目錄及其子目錄。單擊后,打開瀏覽文件夾對(duì)話框,選擇待添加的路徑。在命令窗口中輸入path命令可以查看MATLAB中的搜索路徑, pathMATLABPATHC:UserslenovoDocumentsMATLAB C:Users lenovo AppDataLocalTempEditor_hxlpzD:Program FilesMATLABR2020btoolboxmatlabcapabilitiesD:Program FilesMATLABR

9、2020btoolboxmatlabdatafun2022年7月14日第19頁(yè)MATLAB 的路徑搜索 (2/2)MATLAB 的搜索順序 以元素 foo 為例:1)查找工作區(qū)中是否存在名為 foo 的變量;2)在當(dāng)前路徑中查找是否存在名 foo.m 的文件;3)按照順序查找搜索路徑中是否存在該文件。如果存在多個(gè)名為 foo.m 的文件,則調(diào)用首先查到的文件。第2章 MATLAB的基本使用方法 2022年7月14日第20頁(yè)MATLAB基礎(chǔ)教程(第五版)(微課版) 教學(xué)目標(biāo)教學(xué)重點(diǎn)教學(xué)內(nèi)容教學(xué)目標(biāo) 掌握利用MATLAB R2020b的命令窗口進(jìn)行簡(jiǎn)單的數(shù)學(xué)運(yùn)算 掌握常用的操作命令和快捷鍵 了解M

10、ATLAB R2020b的數(shù)據(jù)類型 了解MATLAB R2020b的操作符 了解MATLAB R2020b的基本數(shù)學(xué)函數(shù) 了解MATLAB R2020b腳本編程2022年7月14日第21頁(yè)教學(xué)重點(diǎn) 掌握利用MATLAB R2020b的命令窗口進(jìn)行簡(jiǎn)單的數(shù)學(xué)運(yùn)算 掌握常用的操作命令和快捷鍵 了解MATLAB R2020b的數(shù)據(jù)類型 了解MATLAB R2020b的操作符2022年7月14日第22頁(yè)教學(xué)內(nèi)容簡(jiǎn)單的數(shù)學(xué)運(yùn)算常用的操作命令和快捷鍵MATLAB R2020b 的數(shù)據(jù)類型MATLAB R2020b 的運(yùn)算符 MATLAB的一些基礎(chǔ)函數(shù)MATLAB腳本文件 2022年7月14日第23頁(yè)簡(jiǎn)單的

11、數(shù)學(xué)運(yùn)算(1/5)最簡(jiǎn)單的計(jì)算器使用法直接輸入法 存儲(chǔ)變量法 在大多數(shù)情況下,MATLAB對(duì)空格不予處理,因此在書寫表達(dá)式時(shí),可以利用空格調(diào)整表達(dá)式的格式,使表達(dá)式更易于閱讀。在MATLAB表達(dá)式中,遵守四則運(yùn)算法則,與通常法則相同。即運(yùn)算從左到右進(jìn)行,乘法和除法優(yōu)先于加減法,指數(shù)運(yùn)算優(yōu)先于乘除法,括號(hào)的運(yùn)算級(jí)別最高;在有多重括號(hào)存在的情況下,從括號(hào)的最里邊向最外邊逐漸擴(kuò)展。需要注意的是,在MATLAB中只用小括號(hào)代表運(yùn)算級(jí)別,中括號(hào)只用于生成向量和矩陣,花括號(hào)用于生成單元數(shù)組。2022年7月14日第24頁(yè)簡(jiǎn)單的數(shù)學(xué)運(yùn)算(2/5) MATLAB中的常用數(shù)學(xué)函數(shù) MATLAB提供的基本初等函數(shù)包

12、括三角函數(shù)、指數(shù)函數(shù)和對(duì)數(shù)函數(shù)、復(fù)數(shù)函數(shù)、取整和求余函數(shù)、坐標(biāo)變換函數(shù)、數(shù)理函數(shù)和一些特殊函數(shù)。 2022年7月14日第25頁(yè)簡(jiǎn)單的數(shù)學(xué)運(yùn)算(3/5)MATLAB 的數(shù)學(xué)運(yùn)算符 需要注意的是,右除和左除的意義并不相同。右除為常規(guī)的除法,而左除的意義為:ab=b/a。 2022年7月14日第26頁(yè)簡(jiǎn)單的數(shù)學(xué)運(yùn)算(4/5) 標(biāo)點(diǎn)符號(hào)的使用 在 MATLAB 中,標(biāo)點(diǎn)符號(hào)有著充分的意義,可以用標(biāo)點(diǎn)符號(hào)進(jìn)行運(yùn)算,或者標(biāo)點(diǎn)符號(hào)可以包含特定的意義。 2022年7月14日第27頁(yè)簡(jiǎn)單的數(shù)學(xué)運(yùn)算(5/5)分號(hào)(;) 分號(hào)用于區(qū)分?jǐn)?shù)組的行,或者用于一個(gè)語句的結(jié)尾處,取消運(yùn)行顯示。百分號(hào)(%) 該符號(hào)用于在程序文

13、本中添加注釋,增加程序的可讀性。百分號(hào)之后的文本都將視作注釋,系統(tǒng)不對(duì)其進(jìn)行編譯。2022年7月14日第28頁(yè)常用的操作命令和快捷鍵(1/3)為方便用戶操作,MATLAB 中定義了一些快捷鍵。掌握一些常用的操作命令和快捷鍵,可以使得對(duì) MATLAB 的操作更加便利。 2022年7月14日第29頁(yè)2022年7月14日第30頁(yè)常用的操作命令和快捷鍵(3/3)快捷鍵功能快捷鍵功能(Ctrl + p)調(diào)用上一行Home(ctrl+a)移動(dòng)到命令行開頭(Ctrl + n)調(diào)用下一行End(ctrl+e)移動(dòng)到命令行結(jié)尾(Ctrl + b)光標(biāo)左移一個(gè)字符Ctrl + Home移動(dòng)到命令窗口頂部(Ctrl

14、 + f)光標(biāo)右移一個(gè)字符Ctrl + End移動(dòng)到命令窗口底部Ctrl + 光標(biāo)左移一個(gè)單詞Shift + Home選中光標(biāo)和表達(dá)式開頭之間的內(nèi)容Ctrl + 光標(biāo)右移一個(gè)單詞Shift + End選中光標(biāo)和表達(dá)式結(jié)尾之間的內(nèi)容Esc取消當(dāng)前輸入行Ctrl + k剪切光標(biāo)和表達(dá)式結(jié)尾之間的內(nèi)容常用的操作命令和快捷鍵(2/3)命令功能命令功能cd顯示或改變工作目錄hold圖形保持命令clc清空命令窗口load加載指定文件中的變量clear清除工作區(qū)中的變量pack整理內(nèi)存碎片clf清除圖形窗口path顯示搜索目錄diary日志文件命令quit退出 MATLABdir顯示當(dāng)前目錄下文件save保

15、存內(nèi)存變量disp顯示變量或文字的內(nèi)容type顯示文件內(nèi)容echo命令窗口信息顯示開關(guān)2022年7月14日第31頁(yè)MATLAB R2020b 的數(shù)據(jù)類型(1/1)整數(shù) 浮點(diǎn)數(shù) 復(fù)數(shù) 邏輯變量 各種數(shù)據(jù)類型之間的轉(zhuǎn)換 數(shù)據(jù)類型操作函數(shù) 變量 系統(tǒng)預(yù)定義的特殊變量 2022年7月14日第32頁(yè)整數(shù)(1/1)MATLAB 支持8位、16位、32位和64位的有符號(hào)和無符號(hào)整數(shù)數(shù)據(jù)類型。整數(shù)數(shù)據(jù)類型除了定義范圍不同外,具有相同的性質(zhì)。2022年7月14日第33頁(yè)浮點(diǎn)數(shù)(1/1)MATLAB 的默認(rèn)數(shù)據(jù)類型是雙精度類型(double)。為了節(jié)省存儲(chǔ)空間,MATLAB 也支持單精度數(shù)據(jù)類型的數(shù)組。 單精度和

16、雙精度數(shù)據(jù)類型的取值范圍和精度可以通過例 2-12 的方式進(jìn)行查看 2022年7月14日第34頁(yè)復(fù)數(shù)(1/2)復(fù)數(shù)由兩個(gè)部分組成:實(shí)部和虛部?;咎摂?shù)單位等于,在 MATLAB 中虛數(shù)單位由 i 或者 j 表示。MATLAB 中可以通過兩種方法創(chuàng)建復(fù)數(shù),第一種方法為直接輸入法,另一種創(chuàng)建復(fù)數(shù)的方法為通過 complex 函數(shù)。 2022年7月14日第35頁(yè)復(fù)數(shù)(2/2)complex 函數(shù)的調(diào)用方法如下。 c = complex(a,b),返回結(jié)果 c 為復(fù)數(shù),其實(shí)部為 a,虛部為 b。輸入?yún)?shù) a 和 b 可以為標(biāo)量,或者維數(shù)、大小相同的向量、矩陣或者多維數(shù)組,輸出參數(shù)和 a 和 b 的結(jié)構(gòu)

17、相同。a 和 b 可以有不同的數(shù)據(jù)類型,當(dāng) a 和 b 為各種不同的類型時(shí),返回值分別為:當(dāng) a 和 b 中有一個(gè)為單精度時(shí),返回結(jié)果為單精度;如果 a 和 b 其中一個(gè)為整數(shù)類型,則另外一個(gè)必須有相同的整數(shù)類型,或者為雙精度型,返回結(jié)果 c 為相同的整數(shù)類型。c = complex(a),只有一個(gè)輸入?yún)?shù),返回結(jié)果 c 為復(fù)數(shù),其實(shí)部為 a,虛部為 0。但是此時(shí) c 的數(shù)據(jù)類型為復(fù)數(shù)。2022年7月14日第36頁(yè)邏輯變量(1/4)邏輯數(shù)據(jù)類型通過 1 和 0 分別表示邏輯真和邏輯假。一些 MATLAB 函數(shù)或操作符會(huì)返回邏輯真或邏輯假表示條件是否滿足。如表達(dá)式 (5 * 10) 40 返回邏

18、輯真。在 MATLAB 中,存在邏輯數(shù)組,如下面的表達(dá)式返回邏輯數(shù)組: 30 40 50 60 70 40ans = 0 0 1 1 12022年7月14日第37頁(yè)邏輯變量(2/4)邏輯數(shù)組的創(chuàng)建 創(chuàng)建邏輯數(shù)組的最簡(jiǎn)單的方法為直接輸入元素的值為 true 或者 false 邏輯數(shù)組也可以通過邏輯表達(dá)式生成2022年7月14日第38頁(yè)邏輯變量(3/4)邏輯數(shù)組的應(yīng)用 用于條件表達(dá)式 如果僅當(dāng)條件成立時(shí)執(zhí)行某段代碼,可以應(yīng)用邏輯數(shù)組進(jìn)行判斷和控制 用于數(shù)組索引在 MATLAB 中支持通過一個(gè)數(shù)組對(duì)另一個(gè)數(shù)組進(jìn)行索2022年7月14日第39頁(yè)邏輯變量(4/4)邏輯數(shù)組的判斷 MATLAB 中提供了一

19、組函數(shù)用于判斷數(shù)組是否為邏輯數(shù)組 函數(shù)功能whos(x)顯示數(shù)組 x 的元素值及數(shù)據(jù)類型islogical(x)判斷數(shù)組 x 是否為邏輯數(shù)組,是則返回真isa(x, logical)判斷數(shù)組 x 是否為邏輯數(shù)組,是則返回真class(x)返回?cái)?shù)組 x 的數(shù)據(jù)類型cellfun(islogical, x)判斷單元數(shù)組的每個(gè)單元是否為邏輯值2022年7月14日第40頁(yè)各種數(shù)據(jù)類型之間的轉(zhuǎn)換(1/1)在 MATLAB 中,各種數(shù)據(jù)類型之間可以互相轉(zhuǎn)化,轉(zhuǎn)化方式為:1)datatype(variable),其中 datatype 為目標(biāo)數(shù)據(jù)類型,variable 為待轉(zhuǎn)化的變量;2)cast(x,ty

20、pe),將x的類型轉(zhuǎn)化為type指定的類型。 轉(zhuǎn)化時(shí),如果由高精確度數(shù)據(jù)類型轉(zhuǎn)化為低精確度數(shù)據(jù)類型,則對(duì)數(shù)據(jù)進(jìn)行四舍五入;如果由定義范圍大的數(shù)據(jù)類型轉(zhuǎn)化為定義范圍小的數(shù)據(jù)類型,則返回目標(biāo)數(shù)據(jù)類型的上限或下限。2022年7月14日第41頁(yè)數(shù)據(jù)類型操作函數(shù)(1/1)函數(shù)描述double創(chuàng)建或轉(zhuǎn)化為雙精度類型single創(chuàng)建或轉(zhuǎn)化為單精度類型int8,int16,int32,int64創(chuàng)建或轉(zhuǎn)化為相應(yīng)的有符號(hào)整數(shù)類型uint8,uint16,uint32,uint64創(chuàng)建或轉(zhuǎn)化為相應(yīng)的無符號(hào)整數(shù)類型isnumeric判斷是否為整數(shù)或浮點(diǎn)數(shù),是則返回true(或者1)isinteger判斷是否為整數(shù),

21、是則返回true(或者1)isfloat判斷是否為浮點(diǎn)數(shù),是則返回true(或者1)isa(x,type)判斷是否為 type 指定的類型,是則返回true(或者1)cast(x,type)設(shè)置x的類型為 typeintmax(type)type 類型的最大整數(shù)值intmin(type)type 類型的最小整數(shù)值realmax(type)type 類型的最大浮點(diǎn)實(shí)數(shù)值realmin(type)type 類型的最小浮點(diǎn)實(shí)數(shù)值eps(type)type 類型eps值eps(x)變量x的eps值2022年7月14日第42頁(yè)變量(1/1)MATLAB 的變量命名規(guī)則與其他計(jì)算機(jī)語言類似,這一節(jié)介紹 M

22、ATLAB 的命名規(guī)則。首先,變量名必須是一個(gè)單一的詞,不能包含空格,另外其命名必須符合下列規(guī)則:(1)變量名區(qū)分大小寫。如 pi 和 Pi 是兩個(gè)不同的變量。在命令窗口中輸入如下的命令,查看其結(jié)果。(2)變量名長(zhǎng)度不超過63個(gè)字符,超過的部分將會(huì)被忽略。(3)變量名必須以字母開始,其后可以為字母、數(shù)字或者下劃線。MATLAB 中的變量名不支持其他符號(hào),因?yàn)槠渌?hào)在 MATLAB 中具有特殊的意義。2022年7月14日第43頁(yè) 2022年7月14日第44頁(yè)系統(tǒng)預(yù)定義的特殊變量 (1/1) 變 量 名描 述ans結(jié)果顯示的默認(rèn)變量名beep使計(jì)算機(jī)發(fā)出“嘟嘟”聲pi圓周率eps浮點(diǎn)數(shù)的精度(2

23、.2204e-016),MALTAB中的最小數(shù)inf無窮大,如當(dāng)除數(shù)為0時(shí)系統(tǒng)返回infNaN或nan表示不定數(shù),即結(jié)果不能確定i或j虛數(shù)單位nargin函數(shù)的輸入?yún)?shù)個(gè)數(shù)nargout函數(shù)的輸出參數(shù)個(gè)數(shù)realmin可用的最小正實(shí)數(shù)2.2251e-308realmax可用的最大正實(shí)數(shù)值1.7977e+308bitmax可用的最大正整數(shù)(以雙精度格式存儲(chǔ))varargin可變的函數(shù)輸入?yún)?shù)個(gè)數(shù)varargout可變的函數(shù)輸出參數(shù)個(gè)數(shù)MATLAB R2020b 的運(yùn)算符(1/3)關(guān)系運(yùn)算符 MATLAB 的關(guān)系運(yùn)算符能用來比較兩個(gè)相同大小的數(shù)組,或用來比較一個(gè)數(shù)組和一個(gè)標(biāo)量。MATLAB 的關(guān)系

24、運(yùn)算符包括所有常用的比較運(yùn)算符。 運(yùn)算符說明運(yùn)算符說明小于大于=大于或等于=等于=不等于2022年7月14日第45頁(yè) MATLAB R2020b 的運(yùn)算符(2/3)邏輯運(yùn)算符 邏輯運(yùn)算符主要包括“與”、“或”和“非”。使用邏輯運(yùn)算符可以將多個(gè)表達(dá)式組合在一起,或者對(duì)關(guān)系表達(dá)式取反。運(yùn)算符描述&與&與,只適用于標(biāo)量。a & b,當(dāng) a 的值為假時(shí),則忽略 b 的值|或|或,只適用于標(biāo)量。a | b,當(dāng) a 的值為真時(shí),則忽略 b 的值非2022年7月14日第46頁(yè)MATLAB R2020b 的運(yùn)算符(3/3)運(yùn)算符優(yōu)先級(jí) MATLAB 首先執(zhí)行具有較高優(yōu)先級(jí)的運(yùn)算,然后執(zhí)行具有較低優(yōu)先級(jí)的運(yùn)算;

25、如果兩個(gè)運(yùn)算的優(yōu)先級(jí)相同,則按從左到右的順序執(zhí)行。運(yùn)算符圓括號(hào) ()轉(zhuǎn)置 (.),共軛轉(zhuǎn)置 (),乘方 (.),矩陣乘方 ()標(biāo)量加法 (+)、減法 (-)、取反 ()乘法 (.*),矩陣乘法 (*),右除 (./),左除 (.),矩陣右除 (/),矩陣左除 ()加法 (+),減法 (-),邏輯非 ()冒號(hào)運(yùn)算符 (:)小于 (),小于等于 (),大于等于 (=),等于 (=),不等于 (=)數(shù)組邏輯與 (&)數(shù)組邏輯或 (|)邏輯與 (&)邏輯或 (|)2022年7月14日第47頁(yè)MATLAB的一些基礎(chǔ)函數(shù)(1/1)位操作函數(shù) 邏輯運(yùn)算函數(shù) 集合函數(shù) 時(shí)間與日期函數(shù) 2022年7月14日第4

26、8頁(yè) 2022年7月14日第49頁(yè)位操作函數(shù)(1/1)所有數(shù)據(jù)在計(jì)算機(jī)中是轉(zhuǎn)化為二進(jìn)制進(jìn)行操作的,因此,有必要對(duì)數(shù)據(jù)進(jìn)行按位操作。 函 數(shù)功 能調(diào)用格式舉例bitand按位進(jìn)行“與”操作C = bitand(A, B)bitcmp按位進(jìn)行“補(bǔ)”操作C = bitcmp(A),C = bitcmp(A, n)bitget獲取指定位置的值C = bitget(A, bit)bitmax獲取雙精度浮點(diǎn)整數(shù)的最大值bitmaxbitor按位進(jìn)行“或”操作C = bitor(A, B)bitset設(shè)定指定位置的值C = bitset(A, bit),C = bitset(A, bit, v)bitshi

27、ft移位操作C = bitshift(A, k),C = bitshift(A, k, n)bitxor按位進(jìn)行“異或”操作C = bitxor(A, B)swapbytes按字節(jié)進(jìn)行“逆”操作Y = swapbytes(X)2022年7月14日第50頁(yè)邏輯運(yùn)算函數(shù) (1/1) 函 數(shù)功 能調(diào)用格式舉例all判斷數(shù)組元素是否全部非零B = all(A),B = all(A, dim)any判斷數(shù)組是否存在非零元素B = any(A),B = any(A, dim)false邏輯0(假)False,false(n) 等find查找非零元素的下標(biāo)及其值ind = find(X),ind = fin

28、d(X, k) 等is*查看元素狀態(tài)代表一類函數(shù),如 iscell 等isa判斷輸入是否為給定類的對(duì)象K = isa(obj, class_name)iskeyword判斷字符串是否為 MATLAB關(guān)鍵字tf = iskeyword(str),iskeyword strisvarname判斷字符串是否為有效變量名tf = isvarname(str),isvarname strlogical將數(shù)值變量轉(zhuǎn)化為邏輯變量K = logical(A)true邏輯 1(真)True,true(n) 等xor邏輯“異或”C = xor(A, B)2022年7月14日第51頁(yè)集合函數(shù) (1/1) 函 數(shù)功

29、能調(diào)用格式舉例intersect計(jì)算兩個(gè)集合的交集c = intersect(A, B)ismember集合的數(shù)組成員tf = ismember(A, S)tf = ismember(A, S, rows)setdiff向量的集合差c = setdiff(A, B)c = setdiff(A, B, rows)issorted判斷幾何元素是否按序排列tf = issorted(A)tf = issorted(A, rows)setxor集合異或c = setxor(A, B)c = setxor(A, B, rows)union兩個(gè)向量的集合并c = union(A, B)c = union(

30、A, B, rows)unique刪除集合中的重復(fù)元素b = unique(A)b = unique(A, rows)2022年7月14日第52頁(yè)時(shí)間與日期函數(shù) (1/1) 函 數(shù)功 能調(diào)用格式舉例addtodate通過域修改日期R = addtodate(D, N, F)calendar返回指定月的日歷c = calendar,c = calendar(d)clock返回當(dāng)前時(shí)間的向量c = clockcputime返回CPU運(yùn)行時(shí)間cputimedate返回當(dāng)前日期字符串str = datedatenum將時(shí)間和日期轉(zhuǎn)化為日期格式N = datenum(V),N = datenum(S,

31、F)datestr將時(shí)間和日期轉(zhuǎn)化為字符串格式S = datestr(V),S = datestr(N)datevec將時(shí)間和日期轉(zhuǎn)化為向量格式V = datevec(N),V = datevec(S, F)eomday返回指定月的最后一天E = eomday(Y, M)etime時(shí)間向量之間的時(shí)間間隔e = etime(t2, t1)now當(dāng)前日期及時(shí)間t = nowtic, toc計(jì)時(shí)器tic any statements tocweekday返回指定日期的星期日期N, S = weekday(D)MATLAB腳本文件(1/4)對(duì)于一些簡(jiǎn)單的問題,當(dāng)需要的命令數(shù)很少時(shí),用戶可以直接在 MA

32、TLAB 的命令窗口中輸入命令。但是,對(duì)于多數(shù)問題,所需的命令較多,或者需要邏輯運(yùn)算,進(jìn)行流程控制,此時(shí)采用直接輸入命令的方法則會(huì)引起不便。針對(duì)這些問題,一個(gè)合理的解決方法是使用腳本文件。腳本文件不接受輸入?yún)?shù),不返回任何值,而是代碼的結(jié)合,該方法允許用戶將一系列 MATLAB 命令輸入到一個(gè)簡(jiǎn)單的腳本文件中,只要在 MATLAB 命令窗口中執(zhí)行該文件,則會(huì)依次執(zhí)行該文件中的命令。2022年7月14日第53頁(yè)2022年7月14日第54頁(yè)MATLAB腳本文件(2/4)腳本文件的用法 新建腳本文件(即M文件)可以通過4種方式進(jìn)行:?jiǎn)螕簟爸黜?yè)”工具面板區(qū)域的“新建腳本”按鈕 ;單擊“主頁(yè)”工具面板區(qū)

33、域的“新建”按鈕 ,在打開的下拉菜單中選擇“腳本”選項(xiàng);在當(dāng)前目錄窗口中右擊,在彈出的菜單中選擇“新建”|“腳本”命令;使用快捷鍵Ctrl+N。新建后系統(tǒng)會(huì)打開文件編輯窗口,在窗口中輸入文件內(nèi)容。MATLAB腳本文件(3/4)塊注釋 在 MATLAB 較早的版本中,注釋是逐行進(jìn)行的,采用百分號(hào)(%)進(jìn)行標(biāo)記。逐行注釋不利于用戶增加和修改注釋內(nèi)容。在MATLAB 7.0及以后的版本中,用戶可以使用“%”和“%”符號(hào)進(jìn)行塊注釋,“%”和“%”分別代表注釋塊的起始和結(jié)束。2022年7月14日第55頁(yè)MATLAB腳本文件(4/4)代碼單元一個(gè)代碼單元指用戶在 M 文件中指定的一段代碼,以一個(gè)代碼單元符

34、號(hào)(兩個(gè)百分號(hào)加空格,即“% ”為開始標(biāo)志,到另一個(gè)代碼單元符號(hào)結(jié)束,如果不存在代碼單元符號(hào),則直到該文件結(jié)束。用戶可以通過 MATLAB 編輯器中的 cell 菜單創(chuàng)建和管理代碼單元。需要注意的是,代碼單元只能在 MATLAB 編輯器窗口中創(chuàng)建和使用,而在 MATLAB 命令窗口中是無效的。當(dāng)作命令窗口中運(yùn)行 M 文件時(shí),將執(zhí)行文件中的全部語句。2022年7月14日第56頁(yè)第3章 數(shù)組和向量 2022年7月14日第57頁(yè)MATLAB基礎(chǔ)教程(第五版)(微課版) 教學(xué)目標(biāo)教學(xué)重點(diǎn)教學(xué)內(nèi)容教學(xué)目標(biāo) 掌握數(shù)組和向量的概念與性質(zhì) 掌握數(shù)組與向量的操作和運(yùn)算方法 了解數(shù)組與向量的實(shí)際應(yīng)用2022年7月

35、14日第58頁(yè)教學(xué)重點(diǎn)數(shù)組的創(chuàng)建方法數(shù)組的操作向量的創(chuàng)建方法向量的操作2022年7月14日第59頁(yè)教學(xué)內(nèi)容MATLAB數(shù)組創(chuàng)建數(shù)組數(shù)組操作MATLAB向量2022年7月14日第60頁(yè)MATLAB數(shù)組(1/1) 數(shù)組是MATLAB中的基本構(gòu)件,數(shù)組中的單個(gè)數(shù)據(jù)項(xiàng)稱為元素。任何變量在MATLAB中都是以數(shù)組形式存儲(chǔ)和運(yùn)算的。按照數(shù)組元素個(gè)數(shù)和排列方式分類按照數(shù)組的存儲(chǔ)方式分類2022年7月14日第61頁(yè)創(chuàng)建數(shù)組 (1/1)可以通過直接輸入數(shù)值來創(chuàng)建數(shù)組,也可以通過MATLAB內(nèi)置函數(shù)來創(chuàng)建具有某一特點(diǎn)的數(shù)組。使用“;”或者另起一行表明一行的結(jié)束,如A2,5,7;1,3,42。函數(shù)zeros(m,n

36、)與ones(m,n)分別產(chǎn)生填充值為0或1的m行n列的數(shù)組。函數(shù)rand(m,n)與randn(m,n)分別產(chǎn)生取值為01之間的隨機(jī)數(shù)的數(shù)組。函數(shù)diag()具有多種形式,最常用的是diag(A),其中A為一數(shù)組,它將A的對(duì)角線上的元素作為向量返回;diag(V),其中V為一向量,它返回一個(gè)對(duì)角線為V的方陣。MATLAB還提供了magic(m)函數(shù),它產(chǎn)生一個(gè)填充1到m2之間數(shù)字的數(shù)組,其組織方式使得每一行、每一列以及對(duì)角線上的元素分別加起來等于相同的數(shù)。2022年7月14日第62頁(yè)數(shù)組操作 (1/1) 獲取數(shù)組中的元素 可以通過將需要獲取元素的索引值用括號(hào)括起來的方式對(duì)數(shù)組中的元素進(jìn)行尋址

37、,其中第一個(gè)值為行索引值,第二個(gè)值為列索引值。也可以向數(shù)組中存儲(chǔ)數(shù)值。如果在超出數(shù)組范圍的位置寫入時(shí),MATLAB將自動(dòng)對(duì)數(shù)組進(jìn)行擴(kuò)充。如果在數(shù)組當(dāng)前元素位置和將要寫入新數(shù)值的位置之間缺失數(shù)據(jù)的話,MATLAB會(huì)將缺失數(shù)據(jù)填充為0。 2022年7月14日第63頁(yè)數(shù)組操作(2/2)數(shù)組算術(shù)操作 數(shù)組邏輯運(yùn)算使用庫(kù)函數(shù)數(shù)組連接數(shù)組切片數(shù)組重排線性化數(shù)組2022年7月14日第64頁(yè)MATLAB向量(1/1)向量是對(duì)相似數(shù)據(jù)項(xiàng)的集合進(jìn)行分組的最簡(jiǎn)單方式,向量是數(shù)據(jù)的一維分組。向量中單個(gè)的數(shù)據(jù)項(xiàng)通常稱為元素(element)。向量元素的兩個(gè)獨(dú)立且截然不同的屬性(數(shù)值及在向量中的位置)決定了其在某一特定向

38、量中的唯一性。 2022年7月14日第65頁(yè)創(chuàng)建向量(1/1)創(chuàng)建向量有兩種方法:使用一系列常值來創(chuàng)建向量。通過對(duì)已有的向量進(jìn)行操作產(chǎn)生新的向量。 2022年7月14日第66頁(yè)向量尺寸(1/1)向量有一個(gè)專門的屬性:向量的長(zhǎng)度。在多數(shù)情況下,該長(zhǎng)度在向量創(chuàng)建時(shí)就已固定。MATLAB能夠通過插入或刪除元素來增加或減小向量的長(zhǎng)度。 函數(shù)length(V)返回?cái)?shù)組大小中的最大值 對(duì)于向量,該數(shù)值即為其長(zhǎng)度。2022年7月14日第67頁(yè)向量索引(1/1)數(shù)值索引 邏輯索引 注意:命令窗口中顯示的邏輯變量值是用1代表真,用0代表假。2022年7月14日第68頁(yè)縮短向量(1/1)注意:實(shí)際中很少將縮短向量

39、作為對(duì)問題的正確求解方法,而且這樣做可能會(huì)導(dǎo)致邏輯混亂。有可能的話,要使用索引來對(duì)需要保留的元素進(jìn)行復(fù)制。2022年7月14日第69頁(yè)向量操作(1/1)MATLAB語言的本質(zhì)核心在于具有豐富的數(shù)組和向量操作工具。有3種方法直接從對(duì)標(biāo)量的操作推廣而來:(1)算術(shù)操作。(2)邏輯操作。(3)使用庫(kù)函數(shù)。有兩種方法是針對(duì)一般情況下的數(shù)組和特殊情況下的向量的:(1)連接。(2)切片(廣義索引)。2022年7月14日第70頁(yè)第4章 MATLAB 的數(shù)學(xué)運(yùn)算 2022年7月14日第71頁(yè)MATLAB基礎(chǔ)教程(第五版)(微課版) 教學(xué)目標(biāo)教學(xué)重點(diǎn)教學(xué)內(nèi)容教學(xué)目標(biāo) 掌握多項(xiàng)式運(yùn)算及插值 掌握函數(shù)操作 掌握微分

40、方程2022年7月14日第72頁(yè)教學(xué)重點(diǎn)多項(xiàng)式運(yùn)算及插值函數(shù)操作微分方程2022年7月14日第73頁(yè)教學(xué)內(nèi)容多項(xiàng)式與插值函數(shù)運(yùn)算微分方程2022年7月14日第74頁(yè)多項(xiàng)式與插值(1/3)多項(xiàng)式的表示 在MATLAB中多項(xiàng)式用一個(gè)行向量表示,向量中的元素為該多項(xiàng)式的系數(shù),按照降序排列。多項(xiàng)式的四則運(yùn)算 多項(xiàng)式的加減即為對(duì)應(yīng)項(xiàng)系數(shù)的加減。多項(xiàng)式的乘法實(shí)際上是多項(xiàng)式系數(shù)向量之間的卷積運(yùn)算,可以通過MATLAB中的卷積函數(shù)conv來完成。多項(xiàng)式的除法為乘法的逆運(yùn)算,可以通過反卷積函數(shù)deconv來實(shí)現(xiàn)。2022年7月14日第75頁(yè) 多項(xiàng)式與插值(2/3)多項(xiàng)式的其他運(yùn)算函數(shù)功能roots多項(xiàng)式求根po

41、lyval多項(xiàng)式求值polyvalm矩陣多項(xiàng)式求值polyder多項(xiàng)式求導(dǎo)poly求矩陣的特征多項(xiàng)式;或者求一個(gè)多項(xiàng)式,其根為指定的數(shù)值polyfit多項(xiàng)式曲線擬合residue求解余項(xiàng)2022年7月14日第76頁(yè)多項(xiàng)式與插值(3/3)數(shù)據(jù)插值。插值運(yùn)算中可選的方法。參數(shù)對(duì)應(yīng)方法nearest最近鄰插值linear線性插值spline三次樣條插值pchip或cubic三次插值2022年7月14日第77頁(yè)函數(shù)運(yùn)算(1/5) 函數(shù)的表示利用M文件將函數(shù)定義為MATLAB函數(shù)采用匿名函數(shù)的方式數(shù)學(xué)函數(shù)圖像的繪制 fplot函數(shù)的調(diào)用方式:(1)fplot(fun, xinterval),y = f

42、(x)。fun可以為MATLAB函數(shù)的M文件名;也可以是包含變量x的字符串,該字符串可以傳遞給函數(shù)eval;還可以是函數(shù)句柄。(2)參數(shù) limits用于指定繪制圖像的范圍。limits是一個(gè)向量,用于指定x軸的范圍,格式為xmin xmax。不設(shè) limits值,默認(rèn)x軸區(qū)間為-5 5。2022年7月14日第78頁(yè) 函數(shù)運(yùn)算(2/5)函數(shù)極值一元函數(shù)的極小值多元函數(shù)的極小值2022年7月14日第79頁(yè)函數(shù)運(yùn)算(3/5)函數(shù)求解使用函數(shù)fzero來求一元函數(shù)的零點(diǎn),該函數(shù)的調(diào)用格式如下:(1)x = fzero(fun,x0),x = fzero(fun,x1,x2):尋找x0附近或者區(qū)間x1

43、,x2內(nèi)fun的零點(diǎn),返回該點(diǎn)的x坐標(biāo)。(2)x = fzero(fun,x0,options),x = fzero(fun, x1,x2,options):通過options設(shè)置參數(shù)。(3)x,fval = fzero(.):返回零點(diǎn)的同時(shí)返回該點(diǎn)的函數(shù)值。(4)x,fval,exitflag = fzero(.):返回零點(diǎn)、該點(diǎn)的函數(shù)值及程序退出的標(biāo)志。(5)x,fval,exitflag,output = fzero(.):返回零點(diǎn)、該點(diǎn)的函數(shù)值、程序退出的標(biāo)志及選定的輸出結(jié)果。2022年7月14日第80頁(yè)函數(shù)運(yùn)算(4/5)數(shù)值積分一元函數(shù)的積分一元函數(shù)的矢量積分二重積分和三重積分202

44、2年7月14日第81頁(yè)函數(shù)運(yùn)算(5/5)含參數(shù)函數(shù)的使用 用嵌套函數(shù)提供函數(shù)參數(shù)用匿名函數(shù)提供函數(shù)參數(shù)2022年7月14日第82頁(yè)微分方程(1/2) 常微分方程初值問題顯式常微分方程完全隱式常微分方程2022年7月14日第83頁(yè)微分方程(2/2)常微分方程邊值問題bvp4c函數(shù)用于求解常微分方程邊值問題,該函數(shù)調(diào)用格式如下:sol = bvp4c(odefun,bcfun,solinit)sol = bvp4c(odefun,bcfun,solinit,options)2022年7月14日第84頁(yè)第5章 字符串、單元數(shù)組和結(jié)構(gòu)體 2022年7月14日第85頁(yè)MATLAB基礎(chǔ)教程(第五版)(微課

45、版) 教學(xué)目標(biāo)教學(xué)重點(diǎn)教學(xué)內(nèi)容教學(xué)目標(biāo)掌握字符串的生成及操作掌握單元數(shù)組的生成及操作掌握結(jié)構(gòu)體的生成及操作2022年7月14日第86頁(yè)教學(xué)重點(diǎn)字符串單元數(shù)組結(jié)構(gòu)體2022年7月14日第87頁(yè)教學(xué)內(nèi)容字符串單元數(shù)組和結(jié)構(gòu)體2022年7月14日第88頁(yè)字符串(1/4) 字符串的生成 MATLAB 中的字符串為 ASCII 值的數(shù)值數(shù)組,作為字符串表達(dá)式進(jìn)行表示。在 MATLAB 中,生成字符串的方法為 stringname=the content of the string。2022年7月14日第89頁(yè)字符串(2/4)字符串的操作字符串的顯示直接顯示和利用 disp 函數(shù)進(jìn)行顯示。字符串的執(zhí)行在

46、MATLAB 中可以用函數(shù) eval 來執(zhí)行字符串。字符串運(yùn)算字符串的運(yùn)算主要包括判斷字符串是否相等,通過字符串運(yùn)算來比較字符串中的字符,進(jìn)行字符分類、查找與替換、字符串與數(shù)值數(shù)組之間的相互轉(zhuǎn)換等。 2022年7月14日第90頁(yè)字符串比較、查找和替換字符串的比較 字符串的比較主要為比較兩個(gè)字符串是否相同,字符串中的子串是否相同和字符串中的個(gè)別字符是否相同。用于比較字符串的函數(shù)主要是strcmp和strncmp。字符串的查找和替換 查找與替換是字符串操作中的一項(xiàng)重要內(nèi)容。用于查找的函數(shù)主要有findstr,strmatch、strrep、strtok等。 2022年7月14日第91頁(yè)字符串(3/

47、4)字符串(4/4)字符串與數(shù)值之間的轉(zhuǎn)化 2022年7月14日第92頁(yè)函數(shù)功能備注uintN(如,uint8)將字符串轉(zhuǎn)化為相應(yīng)的無符號(hào)整數(shù)uint8(ab) 97 98str2num將字符型轉(zhuǎn)化為數(shù)字型str2num(123.56) 123.5600str2double與上一函數(shù)的功能相同,結(jié)果更精確一些,同時(shí)支持單元字符串?dāng)?shù)組double(123.56) 49 50 51 46 53 54。hex2num將十六進(jìn)制數(shù)轉(zhuǎn)化為雙精度數(shù)hex2num(A) -1.4917e-154hex2dec將十六進(jìn)制數(shù)基數(shù)轉(zhuǎn)化為正數(shù)hex2dec(B) 11bin2dec將二進(jìn)制轉(zhuǎn)化為十進(jìn)制bin2dec

48、(1010) 10base2dec將 N 底數(shù)字字符串轉(zhuǎn)化為十進(jìn)制base2dec(212,3) 23單元數(shù)組和結(jié)構(gòu)體 (1/3)MATLAB中的單元數(shù)組(cell array)和結(jié)構(gòu)體(structure)數(shù)據(jù)類型均是將不同的相關(guān)數(shù)據(jù)集成到一個(gè)單一的變量中,使得大量的相關(guān)數(shù)據(jù)的處理與引用變得簡(jiǎn)單而方便。2022年7月14日第93頁(yè)2022年7月14日第94頁(yè)單元數(shù)組和結(jié)構(gòu)體 (2/3)單元數(shù)組 單元數(shù)組的生成單元數(shù)組的操作(1) 單元數(shù)組元素的訪問(2) 單元數(shù)組的顯示(3) 單元數(shù)組的圖形顯示(4) 單元數(shù)組元素的刪除(5) 改變單元數(shù)組的維數(shù)(6) 改變數(shù)組的形狀2022年7月14日第9

49、5頁(yè)單元數(shù)組和結(jié)構(gòu)體 (3/3)結(jié)構(gòu)體 結(jié)構(gòu)體的生成結(jié)構(gòu)體的操作(1) 添加成員變量(2) 刪除成員變量(3) 調(diào)用成員變量第6章 MATLAB 編程2022年7月14日第96頁(yè)MATLAB基礎(chǔ)教程(第五版)(微課版) 教學(xué)目標(biāo)教學(xué)重點(diǎn)教學(xué)內(nèi)容教學(xué)目標(biāo)掌握 MATLAB的腳本文件及其編輯和調(diào)試方法 掌握 MATLAB的程序設(shè)計(jì)和開發(fā)流程 掌握 MATLAB 關(guān)系運(yùn)算、邏輯運(yùn)算及函數(shù)操作 掌握 MATLAB中的流程控制語句 了解 MATLAB的程序調(diào)試方法2022年7月14日第97頁(yè)教學(xué)重點(diǎn)MATLAB 的程序設(shè)計(jì)和開發(fā)流程MATLAB 的關(guān)系運(yùn)算、邏輯運(yùn)算及函數(shù)操作MATLAB 中的流程控制語

50、句MATLAB 程序調(diào)試方法2022年7月14日第98頁(yè)教學(xué)內(nèi)容腳本文件和編輯器程序設(shè)計(jì)和開發(fā)關(guān)系運(yùn)算符和邏輯變量邏輯運(yùn)算符和函數(shù)條件語句循環(huán)switch結(jié)構(gòu)調(diào)試MATLAB程序2022年7月14日第99頁(yè)腳本文件和編輯器(1/11) 在MATLAB中,用戶可以使用兩種方法執(zhí)行運(yùn)算: (1) 在交互模式下,直接在命令窗口中輸入所有的命令。 (2) 通過運(yùn)行腳本文件中所存儲(chǔ)的MATLAB程序。2022年7月14日第100頁(yè)2022年7月14日第101頁(yè)腳本文件和編輯器(2/11) 創(chuàng)建和使用腳本文件 腳本文件和編輯器(3/11)有效使用腳本文件 (1) 腳本文件名必須滿足MATLAB為變量命名的

51、約定。(2) 為腳本文件賦予的名稱不要與其所計(jì)算的變量名稱相同。(3) 為腳本文件賦予的名稱要與MATLAB命令或者函數(shù)的名稱都不相同。 (4) 在交互模式中,腳本文件所創(chuàng)建的所有變量都是全局變量。(5) 函數(shù)文件所創(chuàng)建的變量是該函數(shù)的局部變量。用戶如果不必訪問腳本文件中的所有變量,就需要考慮使用函數(shù)文件。這將避免用變量名“弄亂”工作空間,并將同時(shí)減少內(nèi)存需求。 (6) 在不使用文本編輯器打開M-文件的情況下,用戶可以使用type命令來查看文件的內(nèi)容。2022年7月14日第102頁(yè)腳本文件和編輯器(4/11)有效使用命令窗口和編輯器/調(diào)試器窗口 用戶可以使用鼠標(biāo)重新調(diào)整窗口的大小并移動(dòng)窗口,從

52、而可以同時(shí)查看它們。如果沒有進(jìn)入編輯器/調(diào)試器,那么使用Alt-Tab組合鍵則可快速地在編輯器/調(diào)試器窗口和命令窗口之間來回切換。在命令窗口中,使用向上箭頭鍵檢索先前所輸入的腳本文件名,并且按Enter鍵執(zhí)行腳本文件。在修改了腳本文件之后,要確保在切換到命令窗口之前保存文件。用戶可以使用編輯器/調(diào)試器作為基本的文字處理器來編寫包含有用戶腳本文件、結(jié)果和討論的簡(jiǎn)短報(bào)告,或者用以提供用戶對(duì)某一問題的解答。2022年7月14日第103頁(yè)腳本文件和編輯器(5/11)調(diào)試腳本文件 程序調(diào)試就是找出和刪除程序中“故障”或者錯(cuò)誤的過程。 (1) 語法錯(cuò)誤 (2) 運(yùn)行時(shí)錯(cuò)誤MATLAB錯(cuò)誤消息通常使用戶能夠

53、找到語法錯(cuò)誤。檢查出運(yùn)行時(shí)錯(cuò)誤,可以嘗試以下方法: (1) 總是使用簡(jiǎn)單問題(其可以通過手算來檢驗(yàn)答案)來測(cè)試程序。 (2) 刪除語句末尾的分號(hào),用以顯示任何一個(gè)中間計(jì)算結(jié)果。 (3) 使用編輯器/調(diào)試器的調(diào)試特性。2022年7月14日第104頁(yè)腳本文件和編輯器(6/11)編程風(fēng)格 注釋部分 (1) 在第一行中放置程序名和任何關(guān)鍵詞。 (2)在第二行中放置創(chuàng)建的日期,以及創(chuàng)建者的姓名。 (3) 每個(gè)輸入和輸出變量的變量名定義。 (4) 程序中調(diào)用的每個(gè)用戶自定義函數(shù)名稱。輸入部分:放置輸入數(shù)據(jù)和/或輸入函數(shù),其允許輸入數(shù)據(jù)。計(jì)算部分 :放置計(jì)算。 輸出部分:放置那些以所需格式傳遞的輸出函數(shù)。2

54、022年7月14日第105頁(yè)腳本文件和編輯器(7/11)記錄度量單位 本書建議用戶為所有的輸入變量和輸出變量記錄度量單位,因?yàn)楹芏喙こ滔到y(tǒng)所出現(xiàn)的驚人失敗都源于用戶誤解了用于設(shè)計(jì)系統(tǒng)的程序輸入和輸出變量的單位。 2022年7月14日第106頁(yè)腳本文件和編輯器(8/11)使用腳本文件存儲(chǔ)數(shù)據(jù) 可能會(huì)有一些應(yīng)用程序要求用戶頻繁地訪問同一組數(shù)據(jù)。如果是這樣的話,用戶可以將數(shù)組中的數(shù)據(jù)存儲(chǔ)在一個(gè)腳本文件之中。2022年7月14日第107頁(yè)2022年7月14日第108頁(yè)腳本文件和編輯器(9/11)控制輸入和輸出 MATLAB為從用戶獲取輸入以及為格式化輸出(執(zhí)行MATLAB命令而獲得的結(jié)果)提供了許多有

55、用的命令。 命 令說 明disp(A)顯示數(shù)組A的內(nèi)容,而不是數(shù)組的名稱disp(text)顯示單引號(hào)內(nèi)部的文本串Format控制屏幕輸出的顯示格式Fprintf執(zhí)行格式化的寫入到屏幕或者寫入到一個(gè)文件x = input(text)顯示單引號(hào)中的文本,等待用戶的鍵盤輸入,并且將輸入值存儲(chǔ)在x中x = input(text,s)顯示單引號(hào)中的文本,等待用戶的鍵盤輸入,并且將輸入作為字符串存儲(chǔ)在x中k=menu(title,option1,option2,.顯示菜單,該菜單的名稱在字符串變量title中,并且菜單的選項(xiàng)是option1、option2等等2022年7月14日第109頁(yè)腳本文件和編輯

56、器(10/11)用戶輸入 input函數(shù)用以在屏幕上顯示文本,等待用戶從鍵盤輸入某些內(nèi)容,然后再將輸入內(nèi)容存儲(chǔ)在指定變量之中。腳本文件和編輯器(11/11)腳本文件示例 % 程序Falling_Speed.m:繪制一個(gè)下落物體的速度圖形。% W. Palm III于2004年3月1日創(chuàng)建。% 輸入變量:% tf = 最終時(shí)間(單位為秒)% 輸出變量:% t = 計(jì)算速度的時(shí)間數(shù)組(單位為秒)% v = 速度數(shù)組(米/秒)% 參數(shù)值:g = 9.81; % 以SI為單位的重力加速度% 輸入部分:tf = input(Enter the final time in seconds: );% 計(jì)算部

57、分:dt = tf/500;t = 0:dt:tf; % 創(chuàng)建一個(gè)有501個(gè)時(shí)間值的數(shù)組。v = g*t;% 輸出部分:plot(t,v),xlabel(Time (seconds),ylabel(Speed (meters/second) )2022年7月14日第110頁(yè)程序設(shè)計(jì)和開發(fā) (1/5)算法和控制結(jié)構(gòu) (1)順序運(yùn)算。 (2)條件運(yùn)算。 (3)迭代運(yùn)算(循環(huán))。 結(jié)構(gòu)化程序設(shè)計(jì)(1)編寫結(jié)構(gòu)化程序較容易。(2)為一個(gè)應(yīng)用編寫的模塊(函數(shù))也可以用于其他的應(yīng)用。(3)調(diào)試結(jié)構(gòu)化程序較容易。(4)結(jié)構(gòu)化程序設(shè)計(jì)在團(tuán)隊(duì)環(huán)境中非常有效。(5)理解和修改結(jié)構(gòu)化程序較容易。2022年7月14日

58、第111頁(yè)程序設(shè)計(jì)和開發(fā) (2/5)自頂向下的設(shè)計(jì)和程序文檔 (1)簡(jiǎn)明地陳述問題 (2)指定程序所使用的數(shù)據(jù)。這就是“輸入” (3)指定程序所產(chǎn)生的信息。這就是“輸出” (4)通過手算或者計(jì)算器完成解決方案的步驟。如果需要的話,可以使用一個(gè)較簡(jiǎn)單的數(shù)據(jù)集 (5) 編寫和運(yùn)行程序 (6)用手算結(jié)果檢驗(yàn)程序的輸出 (7)用輸入數(shù)據(jù)運(yùn)行程序,并且對(duì)輸出進(jìn)行一個(gè)真實(shí)性檢驗(yàn) (8)如果用戶在將來使用該程序作為一個(gè)通用工具,那么,用戶必須通過用一組合理的數(shù)據(jù)值來運(yùn)行它以進(jìn)行測(cè)試;并對(duì)結(jié)果進(jìn)行一個(gè)真實(shí)性檢驗(yàn)2022年7月14日第112頁(yè)程序設(shè)計(jì)和開發(fā) (3/5)自頂向下的設(shè)計(jì)和程序文檔結(jié)構(gòu)圖和流程圖通過使

59、用以下方法實(shí)現(xiàn)有效的文檔記錄。 (1)合適地選擇變量名,用以反映它們所代表的量。 (2)在程序中使用注釋。 (3)使用結(jié)構(gòu)圖。 (4)使用流程圖。 (5)通常在偽代碼中逐字地描述程序。2022年7月14日第113頁(yè)程序設(shè)計(jì)和開發(fā) (4/5)偽代碼 偽代碼是對(duì)實(shí)際計(jì)算機(jī)代碼的模仿。偽代碼可以為程序內(nèi)部的注釋提供根據(jù)。除了提供文檔記錄之外,偽代碼在編寫詳細(xì)代碼之前對(duì)于一個(gè)程序輪廓所進(jìn)行的描述也很有用。 查找故障 參看6.1.4節(jié) 2022年7月14日第114頁(yè)程序設(shè)計(jì)和開發(fā) (5/5)開發(fā)大型程序(1)編寫和測(cè)試各個(gè)模塊(單元測(cè)試階段)。(2)編寫使用模塊的頂級(jí)程序(構(gòu)建階段)。(3)測(cè)試第一個(gè)完

60、整的程序(alpha測(cè)試版階段)。(4) 由內(nèi)部人員與熟悉和信任的外部用戶(這通常必須簽保密協(xié)議)測(cè)試最后的alpha測(cè)試版。2022年7月14日第115頁(yè)關(guān)系運(yùn)算符和邏輯變量(1/4) 6個(gè)關(guān)系運(yùn)算符: 小于,大于, =大于或者等于,=等于,=不等于使用關(guān)系運(yùn)算符進(jìn)行比較的結(jié)果是0(如果比較是假)或者1(如果比較是真),并且MATLAB可以使用這個(gè)結(jié)果作為一個(gè)變量。用于比較數(shù)組時(shí),關(guān)系運(yùn)算符逐元素地比較數(shù)組。比較的數(shù)組必須具有相同的維數(shù)。唯一的例外是當(dāng)用戶比較一個(gè)數(shù)組和一個(gè)標(biāo)量的時(shí)候,這時(shí)MATLAB將數(shù)組中的所有元素分別與標(biāo)量進(jìn)行比較。 關(guān)系運(yùn)算符也可以用于數(shù)組尋址。 算術(shù)運(yùn)算符+、-、*

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論