MATLAB仿真及在電子信息與電氣工程中的應(yīng)用(陳鵬展 祝振敏)全套教案課件_第1頁
MATLAB仿真及在電子信息與電氣工程中的應(yīng)用(陳鵬展 祝振敏)全套教案課件_第2頁
MATLAB仿真及在電子信息與電氣工程中的應(yīng)用(陳鵬展 祝振敏)全套教案課件_第3頁
MATLAB仿真及在電子信息與電氣工程中的應(yīng)用(陳鵬展 祝振敏)全套教案課件_第4頁
MATLAB仿真及在電子信息與電氣工程中的應(yīng)用(陳鵬展 祝振敏)全套教案課件_第5頁
已閱讀5頁,還剩429頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

MATLAB仿真及在電子信息與電氣工程中的應(yīng)用(陳鵬展祝振敏)全套可編輯PPT幻燈片課件

2025/8/29ApplicationofMatlabLanguage2

第一章

Matlab概述Matlab的安裝Matlab工作環(huán)境Matlab幫助命令

2025/8/29ApplicationofMatlabLanguage3

1.1MATLAB的安裝在獲得了MATLABR2015b的安裝盤或鏡像文件后,運行setup.exe文件,進入MATLABR2015b安裝過程按照教材中步驟進行安裝即可,此處不在詳述。

2025/8/29ApplicationofMatlabLanguage4

1.2MATLAB的工作環(huán)境啟動與退出MATLAB命令窗口及使用工作空間命令歷史窗口當前工作目錄窗口獲取在線幫助

2025/8/29ApplicationofMatlabLanguage5

1.2.1啟動與退出MATLAB啟動MATLAB直接用鼠標雙擊桌面上MATLAB7.1圖標或Windows桌面的“開始”—〉“所有程序”—〉“MATLAB7.1”—〉“MATLAB7.1”。退出MATLAB關(guān)閉MATLAB桌面在命令窗口執(zhí)行quit或exit命令

2025/8/29ApplicationofMatlabLanguage6

主窗口文件編輯窗口工作空間歷史命令窗口命令窗口命令提示符1.2.1啟動與退出MATLAB(續(xù))當前工作目錄

2025/8/29ApplicationofMatlabLanguage7

1.2.2命令窗口的使用激活命令窗口?!?gt;>”與閃爍的光標一起表明系統(tǒng)就緒,等待輸入。命令窗口脫離MATLAB桌面。簡單計算【例2.2-1】計算(1)在MATLAB命令窗口輸入以下內(nèi)容:>>(12+2*(7-4))/3^2(2)按【Enter】鍵,指令執(zhí)行。(3)返回的計算結(jié)果:ans=2

2025/8/29ApplicationofMatlabLanguage8

1.2.2命令窗口(續(xù))〖說明〗在命令窗口【Enter】鍵提交命令執(zhí)行。Matlab所用運算符(如+、-、^等)是各種計算程序中常見的。計算結(jié)果中的“ans”是英文“answer”的一種縮寫,其含義就是“運算答案”。ans是Matlab的一個預(yù)定義變量。

2025/8/29ApplicationofMatlabLanguage9

1.2.2命令窗口(續(xù))簡單計算(續(xù))【例2.2-2】計算sin(45?)>>sin(45*pi/180)Matalb中正弦函數(shù)sin就是常見的正弦函數(shù)。它的參數(shù)值是以“弧度”為單位的。pi也是Matalb的預(yù)定義變量。pi=3.14159…Matlab對字母大小寫是敏感的?!纠?.2-3】計算的值,其中x=4.92。

>>sqrt(2*exp(4.92+0.5)+1)Matalb中開平方—sqrt(x),是英文squareroot的縮寫

。Matalb中指數(shù)函數(shù)exp(x),常見的表達方式。ans=0.7071ans=21.2781

2025/8/29ApplicationofMatlabLanguage10

1.2.2命令窗口

(續(xù))“clc”清除窗口顯示內(nèi)容的命令?!纠?.2-4】計算的值。

>>y=2*sin(0.3*pi)/(1+sqrt(5))y=0.5000【例2.2-5】計算的值。

>>y=2*cos(0.3*pi)/(1+sqrt(5))y=0.3633命令行編輯

“↑”鍵調(diào)回已輸入過命令。修改。

2025/8/29ApplicationofMatlabLanguage11

1.2.2命令窗口

(續(xù))【例2.2-5】計算半徑為5.2m的圓的周長和面積。>>radius=5.2;%圓的半徑>>area=pi*5.2^2,

circle_len=2*pi*5.2area=

84.9487circle_len=

32.6726以上兩例,命令行中用到了等號“=”。計算結(jié)果不再賦給“ans”,而是賦給用戶指定的變量y、area、circle_len。無論是預(yù)定義變量還是用戶自定義變量都被存儲在系統(tǒng)的工作空間內(nèi),即系統(tǒng)定義的一個存儲窗口變量的內(nèi)存空間。Who、whos命令用來顯示工作空間的變量clear命令用來清除工作空間的變量。

2025/8/29ApplicationofMatlabLanguage12

1.2.2命令窗口(續(xù))>>who>>whosYourvariablesare:anscircle_lenyarearadius

NameSizeBytesClassans1x18doublearrayarea1x18doublearraycircle_len1x18doublearrayradius1x18doublearrayy1x18doublearrayGrandtotalis5elementsusing40bytes

2025/8/29ApplicationofMatlabLanguage13

1.2.2命令窗口

(續(xù))>>cleary>>whoYourvariablesare:anscircle_lenarearadius

>>clearansarea>>whosYourvariablesare:NameSizeBytesClasscircle_len1x18doublearrayradius1x18doublearrayGrandtotalis2elementsusing16bytes

2025/8/29ApplicationofMatlabLanguage14

1.2.2命令窗口

(續(xù))數(shù)值顯示格式設(shè)置缺省顯示格式:簡潔的短(shortg)格式窗口命令及語法格式:format顯示格式關(guān)鍵字如:formatlong%15位數(shù)字顯示常見通用命令命令 含義clc 清除命令窗口的顯示內(nèi)容clear 清除Matlab工作空間中保存的變量who或whos 顯示Matlab工作空間中的變量信息dir 顯示當前工作目錄的文件和子目錄清單cd 顯示或設(shè)置當前工作目錄type 顯示指定m文件的內(nèi)容help或doc 獲取在線幫助quit或exit 關(guān)閉/推出MATALB

2025/8/29ApplicationofMatlabLanguage15

1.2.3工作空間查看工作空間內(nèi)存變量,可以由who、whos。命名新變量。修改變量名刪除變量繪圖保存變量數(shù)據(jù)裝入數(shù)據(jù)

2025/8/29ApplicationofMatlabLanguage16

1.2.4命令歷史窗口歷史窗口:首先記錄每次啟動時間并記錄在命令窗口輸入命令,此次運行期間,輸入的所有命令被記錄為一組,并以此次啟動時間為標志。使用歷史窗口:可以查看命令窗口輸入過的命令或語句可以選擇一條或多條命令執(zhí)行拷貝、執(zhí)行、創(chuàng)建M文件等。

2025/8/29ApplicationofMatlabLanguage17

1.2.5當前工作目錄窗口當前工作目錄窗口:指Matlab運行時的工作目錄。只有在當前目錄和搜索路徑下的文件、函數(shù)才可以被運行和調(diào)用。如果沒有特殊指明,數(shù)據(jù)文件也將存放在當前目錄下;用戶可以將自己的工作目錄設(shè)置成當前目錄,從而使得所有操作都在當前目錄中進行。

2025/8/29ApplicationofMatlabLanguage18

1.2.6獲取在線幫助MATLAB提供的幫助信息有兩類簡單純文本幫助信息helplookfor(條件比較寬松)例:inverse窗口式綜合幫助信息(文字、公式、圖形)dochelpwin第2章Matlab基礎(chǔ)知識

Matlab數(shù)據(jù)類型非常豐富,除數(shù)值型、字符型等基本數(shù)據(jù)類型外,還有結(jié)構(gòu)體、單元等更為復(fù)雜的數(shù)據(jù)類型。各種數(shù)據(jù)類型都以矩陣形式存在,矩陣是Matlab最基本的數(shù)據(jù)對象,并且矩陣的運算是定義在復(fù)數(shù)域上的。

2025/8/29ApplicationofMatlabLanguage20

MATLAB產(chǎn)品由若干模塊組成,不同的模塊完成不同的功能,其中有:

實際上MATLAB本身就是一個極其豐富的資源庫,那么應(yīng)該從哪一部分開始著手、學(xué)習(xí)使用MATLAB呢?這就有必要了解這一軟件產(chǎn)品的體系結(jié)構(gòu)。MATLABCompiler這種編譯器可以將MATLAB程序文件編譯生成標準的C/C++語言文件,而生成的標準的C/C++文件可以被任何一種C/C++編譯器編譯生成函數(shù)庫或可執(zhí)行文件,以提高程序的運行效率。2.1MATLAB的組成

MATLABMATLABToolboxesMATLABCompilerSimulinkSimulinkBlocksetsReal-TimeWorkshop(RTW)StateflowStateflowCoder由這些模塊產(chǎn)品之間的關(guān)系可以圖1.1表示。圖1.1MATLAB產(chǎn)品體系結(jié)構(gòu)圍繞著MATLAB這個計算核心,形成了諸多針對不同應(yīng)用領(lǐng)域的算法程序包,被稱為專用工具箱(Toolbox),這些工具箱的列表以及每個工具箱的使用詳見MATLAB在線幫助文檔。MATLAB本身所提供的工具箱大概有40多個,另外還有其他公司或研究單位開發(fā)提供的工具箱,這些工具箱的總數(shù)已有100多個,而且新的工具箱還在不斷增加。如果你有特別的應(yīng)用領(lǐng)域,可以首先到網(wǎng)上查找是否已有相關(guān)的工具箱,很可能已有人將你要做的應(yīng)用程序作成工具箱了。Simulink是窗口圖形方式的、專門用于連續(xù)時間或離散時間的動態(tài)系統(tǒng)建模、分析和仿真的核心。Real-TimeWorkshop是一種實時代碼生成工具,它能夠根據(jù)Simulink模型生成程序源代碼,并打包、編譯所生成的源代碼生成實時應(yīng)用程序。

從現(xiàn)有的Simulink和Stateflow自動生成C語言程序代碼的功能、定點運算模塊集(Fixed-pointBlockset)與C語言程序代碼到VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,一種標準的硬件電路設(shè)計語言

)的自動轉(zhuǎn)換功能,可以看出,高級的系統(tǒng)仿真或低級的芯片算法設(shè)計,都可用MATLAB、Simulink、Stateflow及相關(guān)的工具箱來完成。Stateflow是基于有限狀態(tài)機理論針對復(fù)雜的事件驅(qū)動系統(tǒng)進行建模、仿真的工具。StateflowCoder是基于Stateflow狀態(tài)圖生成高效、優(yōu)化的程序代碼。圍繞著Simulink仿真核心所開發(fā)的應(yīng)用程序包,稱為模塊集(Blocksets),MATLAB產(chǎn)品提供許多專用模塊集,如CommunicationBlockset、DSPBlockset、SimPowerSystemBlockset、SignalProcessingBlockset等,詳見MATLAB在線幫助文檔。MATLAB是MATLAB產(chǎn)品家族的計算核心與基礎(chǔ),是集高性能數(shù)值計算與數(shù)據(jù)可視化于一體的高效編程語言。

2025/8/29ApplicationofMatlabLanguage21

MATLAB以高性能的數(shù)組運算(包括矩陣運算)為基礎(chǔ),不僅實現(xiàn)了大多數(shù)數(shù)學(xué)算法的高效運行函數(shù)和數(shù)據(jù)可視化,而且提供了非常高效的計算機高級編程語言,在用戶可參與的情況下,各種專業(yè)領(lǐng)域的工具箱不斷開發(fā)和完善,MATLAB取得了巨大的成功,已廣泛應(yīng)用于科學(xué)研究、工程應(yīng)用,用于數(shù)值計算分析、系統(tǒng)建模與仿真。早在20世紀90年代初,歐美等發(fā)達國家的大學(xué)就將MATLAB列為一種必須掌握的編程語言。近幾年來,國內(nèi)的很多大學(xué)也將MATLAB列為了本科生必修課程。與Maple、Mathematica數(shù)學(xué)計算軟件相比,MATLAB以數(shù)值計算見長,而Maple等以符號運算見長,能給出解析解和任意精度解,而處理大量數(shù)據(jù)的能力遠不如MATLAB。

MATLAB軟件功能之強大、應(yīng)用之廣泛,已成為為21世紀最為重要的科學(xué)計算語言。可見學(xué)習(xí)掌握這一工具的重要性。2.2MATLAB的主要功能

2025/8/29ApplicationofMatlabLanguage22

功能強大數(shù)值運算優(yōu)勢符號運算優(yōu)勢(Maple)強大的2D、3D數(shù)據(jù)可視化功能許多具有算法自適應(yīng)能力的功能函數(shù)2.2MATLAB的主要功能

2025/8/29ApplicationofMatlabLanguage23

語言簡單、內(nèi)涵豐富語言及其書寫形式非常接近于常規(guī)數(shù)學(xué)書寫形式;其操作和功能函數(shù)指令就是常用的計算機和數(shù)學(xué)書上的一些簡單英文單詞表達的,如:help、clear等;完備的幫助系統(tǒng),易學(xué)易用。擴充能力、可開發(fā)能力較強MATLAB完全成了一個開放的系統(tǒng)用戶可以開發(fā)自己的工具箱可以方便地與Fortran、C等語言接口

編程易、效率高

Matlab以數(shù)組為基本計算單元具有大量的算法優(yōu)化的功能函數(shù)2.2MATLAB的主要功能

2025/8/29ApplicationofMatlabLanguage24

2.3MATLAB變量變量命令規(guī)則變量名、函數(shù)名對字母的大小寫是敏感的。如myVar與myvar表示兩個不同的變量。變量名第一個字母必須是英文字母。變量名可以包含英文字母、下劃線和數(shù)字。變量名不能包含空格、標點。變量名最多可包含63個字符(6.5及以后的版本)。

2025/8/29ApplicationofMatlabLanguage25

Matlab預(yù)定義的變量變量名意義ans最近的計算結(jié)果的變量名epsMATLAB定義的正的極小值=2.2204e-16pi圓周率πinf∞值,無限大i或j虛數(shù)單元,sqrt(-1)NaN非數(shù),0/0、∞/∞〖說明〗每當MATLAB啟動完成,這些變量就被產(chǎn)生。MATLAB中,被0除不會引起程序中斷,給出報警的同時用inf或NaN給出結(jié)果。用戶只能臨時覆蓋這些預(yù)定義變量的值,Clear或重啟MATLAB可恢復(fù)其值。2.3MATLAB變量

2025/8/29ApplicationofMatlabLanguage26

2.4Matlab數(shù)據(jù)數(shù)據(jù)類型矩陣的概念一維數(shù)組變量的創(chuàng)建二維數(shù)組變量的創(chuàng)建數(shù)組元素的標識與尋訪字符串多維矩陣元胞結(jié)構(gòu)

2025/8/29ApplicationofMatlabLanguage27

2.4.1.MATLAB數(shù)據(jù)類型數(shù)據(jù)的記述

Matlab的數(shù)只采用習(xí)慣的十進制表示,可以帶小數(shù)點和負號;其缺省的數(shù)據(jù)類型為雙精度浮點型(double)。例如:3-100.0011.3e101.256e-6其他數(shù)據(jù)類型

此外,MATLAB還提供了各種有符號、無符號整型數(shù)據(jù),具體參見教材表2.2。

2025/8/29ApplicationofMatlabLanguage28

2.4.2數(shù)組(array)的概念矩陣定義:按行(row)和列(column)順序排列的實數(shù)或復(fù)數(shù)的有序集,被稱為數(shù)組,也叫矩陣。矩陣中的任何一個數(shù)都被稱為這個矩陣的元素,由其所在的行和列標識,這個標識也稱為矩陣元素的下標或索引。Matlab將標量視為1×1的矩陣。對m行、n列的2維數(shù)組a:計為m×n的矩陣a;*行標識、列標識均從1開始;行標識從上到下遞增;列標識從左到右遞增。12345222232425332333435442434445a(3,4)=34rowisfirsta=

2025/8/29ApplicationofMatlabLanguage29

數(shù)組的分類一維數(shù)組,也稱為向量(vector)。行向量(rowvector)、列向量(columnvector)。二維數(shù)組(矩陣matrix)。多維數(shù)組。有效矩陣:每行元素的個數(shù)必須相同,每列元素的個數(shù)也必須相同。2.4.2.數(shù)組(array)的概念

2025/8/29ApplicationofMatlabLanguage30

2.4.2數(shù)組(array)的概念(續(xù))行向量列向量a(2,1)=3a(1,2)=2b(3)=3c(2)=2

2025/8/29ApplicationofMatlabLanguage31

2.4.3創(chuàng)建一維數(shù)組變量第一種方法:使用方括號“[]”操作符【例2-1】創(chuàng)建數(shù)組(行向量)a=[13pi3+5i]>>a=[13pi3+5*i]%ora=[1,3,pi,3+5*i]

a=1.00003.00003.14163.0000+5.0000i所有的向量元素必須在操作符“[]”之內(nèi);向量元素間用空格或英文的逗點“,”分開。第二種方法:使用冒號“:”操作符【例2-2】創(chuàng)建以1~10順序排列整數(shù)為元素的行向量b。>>b=1:10b=12345678910

2025/8/29ApplicationofMatlabLanguage32

2.4.3創(chuàng)建一維數(shù)組變量(續(xù))【例2-3】鍵入并執(zhí)行c=1:2:10和d=1:2:9>>c=1:2:10c=13579>>d=1:2:9d=13579利用冒號“:”操作符創(chuàng)建行向量的基本語法格式:x=Start:Increment:EndStart表示新向量x的第一個元素;新向量x的最后一個元素不能大于End;Increment可正可負,若負,則必須Start>End;若正,則必須Start<End,否則創(chuàng)建的為空向量。若Increment=1,則可簡寫為:x=Start:End。

2025/8/29ApplicationofMatlabLanguage33

2.4.3創(chuàng)建一維數(shù)組變量(續(xù))第三種方法:利用函數(shù)linspace函數(shù)linspace的基本語法x=linspace(x1,x2,n)該函數(shù)生成一個由n個元素組成的行向量;x1為其第一個元素;x2為其最后一個元素;x1、x2之間元素的間隔=(x2-x1)/(n-1)。如果忽略參數(shù)n,則系統(tǒng)默認生成100個元素的行向量。【例2-4】鍵入并執(zhí)行x=linspace(1,2,5)x=1.00001.25001.50001.75002.0000同學(xué)們可以在實驗時察看x=linspace(1,2)執(zhí)行結(jié)果。

2025/8/29ApplicationofMatlabLanguage34

2.4.3創(chuàng)建一維數(shù)組變量(續(xù))第四種方法:利用函數(shù)logspace通過實驗認識該函數(shù)的功能。列向量的創(chuàng)建使用方括號“[]”操作符,使用分號“;”分割行?!纠?-5】鍵入并執(zhí)行x=[1;2;3]X=123使用冒號操作符【例2-6】鍵入并執(zhí)行x=(1:3)’%“’”表示矩陣的轉(zhuǎn)置

2025/8/29ApplicationofMatlabLanguage35

2.4.3創(chuàng)建一維數(shù)組變量

(續(xù))創(chuàng)建數(shù)組變量的一般方法創(chuàng)建變量的賦值語句的一般格式var=expressionvar為變量名expression為MATLAB合法表達式可以是單獨的常數(shù)值或數(shù)值數(shù)組;也可以由常數(shù)值、其他變量(部分或全部)、數(shù)值數(shù)組和運算符(+、-等)構(gòu)成。【例2-7】鍵入并執(zhí)行a=[01+6];b=[a67];c=[6a7];d=[6a7a];

2025/8/29ApplicationofMatlabLanguage36

2.4.3創(chuàng)建一維數(shù)組變量

(續(xù))一旦被創(chuàng)建,變量就被存儲在工作空間,可以通過“Workspace”窗口或在“CommandWindow”執(zhí)行“whos”命令察看。操作一:使用“Workspace”窗口察看變量操作二:使用“whos”命令察看變量

2025/8/29ApplicationofMatlabLanguage37

2.4.4創(chuàng)建二維數(shù)組變量第一種方法:使用方括號“[]”操作符使用規(guī)則數(shù)組元素必須在“[]”內(nèi)鍵入;行與行之間須用分號“;”間隔,也可以在分行處用回車鍵間隔;行內(nèi)元素用空格或逗號“,”間隔?!纠?-8】鍵入并執(zhí)行a2=[123;456;789]a2=123456789【例2-9】鍵入并執(zhí)行a2=[1:3;4:6;7:9]%結(jié)果同上

2025/8/29ApplicationofMatlabLanguage38

2.4.4創(chuàng)建二維數(shù)組變量(續(xù))【例2-10】由向量構(gòu)成二維數(shù)組。>>a=[123];b=[234];>>c=[a;b];>>c1=[ab];第二種方法:函數(shù)方法函數(shù)ones(生成全1矩陣)、zeros(生成全0矩陣)、reshape“helpelmat”獲得基本的矩陣生成和操作函數(shù)列表【例2-11】創(chuàng)建全1的3x3數(shù)組。>>ones(3)【例2-12】創(chuàng)建全1的3x4數(shù)組。>>ones(3,4)

2025/8/29ApplicationofMatlabLanguage39

2.4.4創(chuàng)建二維數(shù)組變量(續(xù))【例2-13】reshape的使用演示>>a=-4:4a=-4-3-2-101234>>b=reshape(a,3,3)b=-4-12-303-214數(shù)組元素的排列順序,從上到下按列排列,先排第一列,然后第二列,…要求數(shù)組的元素總數(shù)不變。

2025/8/29ApplicationofMatlabLanguage40

2.4.5數(shù)組元素的標識與尋訪數(shù)組元素的標識“全下標(index)”標識經(jīng)典數(shù)學(xué)教科書采用“全下標”標識法:每一維對應(yīng)一個下標。如對于二維數(shù)組,用“行下標和列下標”標識數(shù)組的元素,a(2,3)就表示二維數(shù)組a的“第2行第3列”的元素。對于一維數(shù)組,用一個下標即可,b(2)表示一維數(shù)組b的第2個元素,無論b是行向量還是列向量。“單下標”(linearindex)標識所謂“單下標”標識就是用一個下標來表明元素在數(shù)組的位置。對于二維數(shù)組,“單下標”編號:設(shè)想把二維數(shù)組的所有列,按先后順序首尾相接排成“一維長列”,然后自上往下對元素位置執(zhí)行編號。兩種“下標”標識的變換:sub2ind、ind2sub

2025/8/29ApplicationofMatlabLanguage41

2.4.5數(shù)組元素的標識與尋訪(續(xù))【例2-14】單下標的使用>>a=zeros(2,5);>>a(:)=-4:5a=-4-2024-3-1135注意數(shù)組的排列順序。

2025/8/29ApplicationofMatlabLanguage42

2.4.5數(shù)組元素的標識與尋訪(續(xù))元素與子數(shù)組的尋訪與賦值【例2-15】一維數(shù)組元素與子數(shù)組的尋訪與賦值>>a=linspace(1,10,5)a=1.00003.25005.50007.750010.0000>>a(3)%尋訪a的第3個元素ans=5.5000>>a([125])%尋訪a的第1、2、5個元素組成的子數(shù)組ans=1.00003.250010.0000

2025/8/29ApplicationofMatlabLanguage43

2.4.5數(shù)組元素的標識與尋訪(續(xù))>>a(1:3)%尋訪前3個元素組成的子數(shù)組ans=1.00003.25005.5000>>a(3:-1:1)%由前3個元素倒序構(gòu)成的子數(shù)組ans=5.50003.25001.0000>>a(3:end)ans=5.50007.750010.0000>>a(3:end-1)ans=5.50007.7500%第3個及其后所有元素構(gòu)成的子數(shù)組函數(shù)end作為參數(shù)使用,返回最后一個元素的下標

2025/8/29ApplicationofMatlabLanguage44

>>a([12355321])ans=1.00003.25005.500010.000010.00005.50003.25001.0000數(shù)組元素可以被任意重復(fù)訪問,構(gòu)成長度大于原數(shù)組的新數(shù)組。>>a(6)???Indexexceedsmatrixdimensions.下標值超出了數(shù)組的維數(shù),導(dǎo)致錯誤>>a(2.1)???Subscriptindicesmusteitherberealpositiveintegersorlogicals.下標值只能取正整數(shù)或邏輯值2.4.5數(shù)組元素的標識與尋訪(續(xù))

2025/8/29ApplicationofMatlabLanguage45

2.4.5數(shù)組元素的標識與尋訪(續(xù))>>a(3)=0%修改數(shù)組a的第3元素值為0a=1.00003.250007.750010.0000>>a([25])=[11]a=1.00001.000007.75001.0000可以修改指定數(shù)組元素的值一次可以修改多個數(shù)組元素的值要修改的數(shù)組元素的個數(shù)應(yīng)與送入數(shù)組的元素個數(shù)相同

2025/8/29ApplicationofMatlabLanguage46

2.4.5數(shù)組元素的標識與尋訪(續(xù))【例2-16】二維數(shù)組元素與子數(shù)組的尋訪與賦值>>a_2=zeros(2,4)%創(chuàng)建2x4的全0數(shù)組a_2=00000000>>a_2(:)=1:8a_2=13572468>>a_2([258])%單下標方式尋訪多個元素ans=258注意元素的排列順序

2025/8/29ApplicationofMatlabLanguage47

2.4.5數(shù)組元素的標識與尋訪(續(xù))>>a_2([258])=[102030]a_2gt;>a_2(:,[23])=ones(2)%雙下標方式尋訪并修改a_2=1117101130二維數(shù)組可以“單下標”方式或“全下標”方式訪問、賦值;“單下標”方式賦值時,等號兩邊涉及的元素個數(shù)必須相等;“全下標”方式賦值時,等號右邊數(shù)組的大小必須等于原數(shù)組中涉及元素構(gòu)成的子數(shù)組的大小。

2025/8/29ApplicationofMatlabLanguage48

2.4.5數(shù)組元素的標識與尋訪(續(xù))>>a_2(:,end)ans=730>>a_2(:,end-1)ans=11>>a_2(:,end:-1:3)ans=71301>>a_2(end,:)ans=101130>>a_2(end,[2:4])ans=1130>>a_2([46])=6:7a_2=1117106730>>a_2(end,[2:end-1])

Whatistheresult?

2025/8/29ApplicationofMatlabLanguage49

2.4.5數(shù)組元素的標識與尋訪(續(xù))【例2-17】

size、length函數(shù)>>a=ones(4,6)*6>>m=size(a)>>len=length(a)>>b=1:5;>>length(b)>>c=b’>>length(c)

size函數(shù)返回變量的大小,即變量數(shù)組的行列數(shù)

length函數(shù)返回變量數(shù)組的最大維數(shù)

2025/8/29ApplicationofMatlabLanguage50

2.4.5數(shù)組元素的標識與尋訪(續(xù))雙下標到單下標的轉(zhuǎn)換【例2-18】

sub2ind函數(shù)-雙下標轉(zhuǎn)換為單下標>>A=[172418;222714;461320];>>A(:,:,2)=A-10>>A(2,1,2)>>sub2ind(size(A),2,1,2)>>A(14)

2025/8/29ApplicationofMatlabLanguage51

2.4.5數(shù)組元素的標識與尋訪(續(xù))單下標到雙下標的轉(zhuǎn)換【例2-19】

ind2sub函數(shù)-雙下標轉(zhuǎn)換為單下標>>b=zeros(3);>>b(:)=1:9>>IND=[3456]>>[I,J]=ind2sub(size(b),IND)

2025/8/29ApplicationofMatlabLanguage52

2.4.6

字符串Matlab用「單引號」來界定一個字符串??梢允褂梅嚼ㄌ枴癧]”直接連接多個字符串變量,得到一個新字符串變量。【例2-20】命名字符串變量str1=‘IlikeMATLAB,’;

%建立字串變量

str1str2='JavaScript,andPerl!';

%建立字串變量str2str3=[str1str2]

%直接連接str1及str2,以建立str3str3=

IlikeMATLAB,JavaScript,andPerl!

2025/8/29ApplicationofMatlabLanguage53

2.4.6

字符串如要輸入的字符串中有單引號,則由兩個連續(xù)的單引號來表示。若要計算字符串變量的長度(即組成字符串的個數(shù)),可用length指令。

【例2-21】含單引號字符串的輸入sentence='I''vegotadate!';length(sentence) %計算字字符串sentence的長度ans=16

2025/8/29ApplicationofMatlabLanguage54

2.4.6字符串double指令:查看字符串變量的存儲內(nèi)容(即ASCII內(nèi)碼)char指令:將

ASCII內(nèi)碼轉(zhuǎn)換為字符串形式【例2-22】:字符串與ASCII碼的相互轉(zhuǎn)換

sentence='I''vegotadate!';sentenceAscii=double(sentence)%查看

sentence的ASCII碼sentence2=char(sentenceAscii)

%將

ASCII碼恢復(fù)成字符串形式sentenceAscii= 733911810132103111116329732100

9711610133 sentence2=

I'vegotadate!

2025/8/29ApplicationofMatlabLanguage55

2.4.6字符串的判斷class或

ischar

指令:可以用來判斷一個變量的類型或它是否為字符串變量。【例2-23】:判斷一個變量是否為字符串變量。

chinese=‘今日事,今日畢';out1=class(chinese)

%out1的值是“char”x=chinese+1;out2=ischar(x)

%out2的值是0,代表x不是字符串變量

2025/8/29ApplicationofMatlabLanguage56

2.4.6一個字符數(shù)組變量存儲多行字符串

第一種方法是使用二維字符數(shù)組(TwoDimensionalCharacterArrays)必須先確認每個字符串(即每一行)的長度一樣,否則就必須在短字符串結(jié)尾補齊空格

【例2-24】:多行字符串變量departments=[‘ee’;‘cs’;‘econ’] 注意上述語句中空格字符的使用。departments=

ee cs econ

2025/8/29ApplicationofMatlabLanguage57

2.4.6一個變量存儲多個字符串

(續(xù))用char指令存儲多字符串得到結(jié)果和上例的一樣;從二維字符數(shù)組訪問字符串時,切記要使用deblank指令來清除字符串尾部的空格字符

【例2-25】:使用deblank命令清除字符串尾部空格.departments=char(‘ee’,‘cs’,‘econ’)

%注意空格及「,」的使用departments=char('ee','cs','econ');dept1=departments(1,:); %(1,:)代表第一行的全部元素

dept2=deblank(dept1);

%使用deblank

指令清除尾部的空格字符

len1=length(dept1) %顯示變量

dept1的長度=4len2=length(dept2)

%

顯示變量

dept2的長度=2

2025/8/29ApplicationofMatlabLanguage58

2.4.6字符串的操作strcmp

指令:用于比較字符串的內(nèi)容的異同

【例2-26】:字符串比較不相等返回0,相等返回1str1='today';str2='tomorrow';str3='today';out1=strcmp(str1,str2)

%比較字符串str1和

str2out1=0

%表示字符串str1和

str2不同out2=strcmp(str1,str3)

%

比較字符串str1和str3out2=1

%表示字符串str1和

str2相同

2025/8/29ApplicationofMatlabLanguage59

2.4.7

多維數(shù)組多維數(shù)組的定義在MATLAB的數(shù)據(jù)類型中,向量可視為一維數(shù)組,矩陣可視為二維數(shù)組,對于維數(shù)(Dimensions)超過2的數(shù)組均可視為「多維數(shù)組」(MultidimesionalArrays,簡稱N-DArrays)。

2025/8/29ApplicationofMatlabLanguage60

2.4.7

多維數(shù)組(續(xù))將兩個二維(平面)數(shù)組疊在一起,就構(gòu)成三維數(shù)組,第三維稱為「頁」(Page),如下圖所示:

(3,4)

(3,1)

(3,2)

(3,3)(2,4)(2,3)(2,2)(2,1)(1,4)(1,3)(1,2)(1,1)(1,1)(1,2)(1,3)(1,4)(2,1)(2,2)(2,3)(2,4)(3,1)(3,2)(3,3)(3,4)頁列頁行

2025/8/29ApplicationofMatlabLanguage61

2.4.7

多維數(shù)組(續(xù))三維數(shù)組,可對應(yīng)至一個

X-Y-Z三維立體坐標,如下圖所示:

Z(頁)Y(列)X(行)

2025/8/29ApplicationofMatlabLanguage62

2.4.7

多維數(shù)組(續(xù))三維數(shù)組元素的尋址:可以(行、列、頁)來確定。以維數(shù)為

3×4×2的三維數(shù)組為例,其尋址方式如下圖所示:數(shù)組

A是三維數(shù)組,其中A(:,:,1)代表第一頁的二維數(shù)組,A(:,:,2)代表第二頁的二維數(shù)組。

2025/8/29ApplicationofMatlabLanguage63

2.4.7

多維數(shù)組(續(xù))多維數(shù)組的建立建立一個簡單的多維數(shù)組,可直接由MATLAB命令視窗內(nèi)輸入(使用“[]”操作符)例:由兩個相同大小二維數(shù)組創(chuàng)建三維數(shù)組A(:,:,1)=[1025;4187;3263];A(:,:,2)=[3541;2621;4230]

A(:,:,1)=102541873263A(:,:,2)=354126214230

2025/8/29ApplicationofMatlabLanguage64

2.4.7

多維數(shù)組(續(xù))執(zhí)行命令:whosA,得到如下結(jié)果:

NameSizeBytes

Class

A3x4x2

192

doublearrayGrandtotalis24elementsusing192bytes

2025/8/29ApplicationofMatlabLanguage65

2.4.8元胞數(shù)組(cellarray)元胞數(shù)組(單元數(shù)組)的概念特殊的數(shù)據(jù)類型,在一個數(shù)組中存放各種不同類型的數(shù)據(jù)每個單元相當于一個“盒子”“盒子”可存儲各種不同類型的MATLAB數(shù)據(jù)元胞數(shù)組例子:Cell1,1TaiwanTaibeiCell1,2MainlandBeijingCell1,3[1234]test

2025/8/29ApplicationofMatlabLanguage66

2.4.8

元胞數(shù)組的創(chuàng)建創(chuàng)建方法賦值語句cell函數(shù)賦值語句創(chuàng)建元胞數(shù)組元胞索引(cellindexing)方式

格式:a(1,2)={………}元胞內(nèi)容索引(contentindexing)方式

格式:a{1,2}=[…]or‘…’直接用大括號一次把所有元素括起來b={'JamesBond',[12;34;56];pi,ones(5)}

2025/8/29ApplicationofMatlabLanguage67

2.4.8

元胞數(shù)組的創(chuàng)建(續(xù))Cellindexing方式創(chuàng)建元胞數(shù)組>>a(1,1)={[143;058;729]};>>a(1,2)={'AnneSmith'};>>a(2,1)={3+7i};>>a(2,2)={-pi:pi/10:pi};“{}”表示空元胞數(shù)組Contentindexing方式創(chuàng)建元胞數(shù)組>>b{1,1}='JamesBond';>>b{1,2}=[12;34;56];>>b{2,1}=pi;>>b{2,2}=zeros(5);

2025/8/29ApplicationofMatlabLanguage68

2.4.8

元胞數(shù)組的創(chuàng)建(續(xù))元胞數(shù)組的連接Exam:連接元胞數(shù)組a、b,生成元胞數(shù)組c。clearcc=[ab]%orc=[a;b]c=[3x3double]'AnneSmith''JamesBond'[3x2double][3.0000+7.0000i][1x21double][3.1416][5x5double]>>c=[a;b]Result?

2025/8/29ApplicationofMatlabLanguage69

2.4.8

元胞數(shù)組的創(chuàng)建(續(xù))cell函數(shù)創(chuàng)建元胞數(shù)組>>b=cell(2,3)b=[][][][][][]>>whosbNameSizeBytesClassb2x324cellarray注意:每個cell占有4個字節(jié)的空間>>b(1,3)={1:3};%orb{1,3}=1:3;

2025/8/29ApplicationofMatlabLanguage70

2.4.8

顯示元胞數(shù)組的內(nèi)容celldisp顯示元胞數(shù)組的全部內(nèi)容>>aa=[3x3double]'AnneSmith'[3.0000+7.0000i][1x21double]>>celldisp(a)%顯示全部內(nèi)容>>cellplot(a)%圖形方式顯示元胞數(shù)組的結(jié)構(gòu)

2025/8/29ApplicationofMatlabLanguage71

2.4.8

顯示元胞數(shù)組的內(nèi)容(續(xù))使用內(nèi)容下標索引顯示指定元胞的數(shù)據(jù)格式:var_name{row_index,column_index}

var_name{:}Example:>>a{1,2}…>>a{:}%一次顯示a的全部數(shù)據(jù)…

2025/8/29ApplicationofMatlabLanguage72

2.4.8

讀取元胞數(shù)組中的內(nèi)容直接取用元胞數(shù)組的整個元胞(單元)取用元胞數(shù)組某元胞內(nèi)的數(shù)據(jù)單位一次讀取或刪除多個元胞

2025/8/29ApplicationofMatlabLanguage73

2.4.8

讀取元胞數(shù)組中的內(nèi)容(續(xù))Exam:讀取上述b元胞數(shù)組的第1行、第2列元胞的內(nèi)容>>b,d=b{1,2}d=123456b='JamesBond'[3x2double][3.1416][5x5double]

2025/8/29ApplicationofMatlabLanguage74

2.4.8

讀取元胞數(shù)組中的內(nèi)容(續(xù))Exam:

讀取b{1,2}的第3行、第1列的數(shù)據(jù)。>>

e=b{1,2}(3,1)e=5

讀取元胞數(shù)組元胞內(nèi)部分數(shù)據(jù):元胞數(shù)組內(nèi)容索引,再加上一般數(shù)組的索引,即:var_name{row_ind,col_ind}(r_ind,c_ind)

2025/8/29ApplicationofMatlabLanguage75

2.4.8

讀取元胞數(shù)組中的內(nèi)容(續(xù))Exam:

讀取元胞數(shù)組a第1行的所有元胞。>>f=a(1,:)f=

[3x3double]'AnneSmith'Exam:刪除元胞數(shù)組a第1行的所有元胞。>>a(1,:)=[]

a=

[3.0000+7.0000i][1x21double]Note:這里使用的是元胞索引(cellindexing),而不是內(nèi)容索引(contentindexing)

2025/8/29ApplicationofMatlabLanguage76

2.4.9

結(jié)構(gòu)與結(jié)構(gòu)數(shù)組的概念結(jié)構(gòu)(structure)由字段(或域,fields)組成每個字段可以是任一種Matlab數(shù)據(jù)類型的數(shù)據(jù)或變量與C語言的結(jié)構(gòu)類型相似結(jié)構(gòu)數(shù)組(structurearray)多個結(jié)構(gòu)構(gòu)成結(jié)構(gòu)數(shù)組(structurearray)結(jié)構(gòu)數(shù)組的元素就是一個結(jié)構(gòu)

2025/8/29ApplicationofMatlabLanguage77

2.4.9

結(jié)構(gòu)數(shù)組變量的創(chuàng)建方法一:直接鍵入Exam:創(chuàng)建一個關(guān)于學(xué)生信息的結(jié)構(gòu)數(shù)組,每個結(jié)構(gòu)包含學(xué)生姓名(name)、學(xué)號(id)、成績(scores)。

>>clearstudent

%清除student變量

>>='張三';

%加入name字段

>>student.id='mr871912';

%加入id字段

>>student.scores=[58,75,62]; %加入scores字段

>>student %顯示結(jié)構(gòu)變量的數(shù)據(jù)

student= name:'張三'

id:'mr871912' scores:[58,75,62]此時,Matlab視

student為一個1x1結(jié)構(gòu)數(shù)組

2025/8/29ApplicationofMatlabLanguage78

2.4.9

結(jié)構(gòu)數(shù)組變量的創(chuàng)建(續(xù))第二個學(xué)生的信息建立

>>student(2).name='張寧';

%加入name字段

>>student(2).id='mr871913';

%加入id字段

>>student(2).scores=[68,85,92];

%加入scores字段

>>student

%顯示變量信息student=1x2structarraywithfields:nameidscores

2025/8/29ApplicationofMatlabLanguage79

2.4.9

結(jié)構(gòu)數(shù)組變量的創(chuàng)建(續(xù))此時,student變量已成為一個1x2的結(jié)構(gòu)數(shù)組只是簡單輸入變量名student的話,Matlab不再顯示其所有的數(shù)據(jù)信息,只是給出結(jié)構(gòu)如何顯示結(jié)構(gòu)數(shù)組變量student的數(shù)據(jù)?student(1)或student(1).name

2025/8/29ApplicationofMatlabLanguage80

2.4.9

結(jié)構(gòu)數(shù)組變量的創(chuàng)建(續(xù))方法二:struc函數(shù)格式Structure

Array_var_name=struct(field1,value1,field2,value2,….)field1、field2、…是結(jié)構(gòu)的字段名,value1、value2、…則是相應(yīng)字段所包含的數(shù)據(jù)。

2025/8/29ApplicationofMatlabLanguage81

2.4.9

結(jié)構(gòu)數(shù)組變量的創(chuàng)建(續(xù))Exam:使用struct創(chuàng)建結(jié)構(gòu)數(shù)組變量>>clearstudent>>student=struct('name','張聽說','scores',[5060]);>>student(2)=struct('name','張廷安','scores',[60

70]);>>student(1),student(2)%顯示student(1),student(2)ans=name:'張聽說'scores:[5060]ans=name:'張廷安'scores:[6070]

2025/8/29ApplicationofMatlabLanguage82

2.4.9

結(jié)構(gòu)數(shù)組變量的創(chuàng)建(續(xù))Exam:使用struct創(chuàng)建結(jié)構(gòu)數(shù)組變量(一次建立多個元素)>>clearstudent>>student=struct('name',{'張聽說','張廷安'},'scores',{[5060],[6070]});>>student(1),student(2)%顯示student(1),…ans=name:'張聽說'scores:[5060]ans=name:'張廷安'scores:[6070]

2025/8/29ApplicationofMatlabLanguage83

2.4.9

結(jié)構(gòu)數(shù)組變量的創(chuàng)建(續(xù))結(jié)構(gòu)數(shù)組嵌套(nested)結(jié)構(gòu)數(shù)組中結(jié)構(gòu)的字段還可以是結(jié)構(gòu)。

student=struct('name',{'張聽說','張廷安'},'scores',…

{[5560],[65

80]}); student(2).course(1).title='WebProgramming'; student(2).course(1).credits=2; student(2).course(2).title='NumericalMethod'; student(2).course(2).credits=3; student(2).course ans= 1x2structarraywithfields: title

credits

2025/8/29ApplicationofMatlabLanguage84

2.4.9

結(jié)構(gòu)數(shù)組變量的創(chuàng)建(續(xù))結(jié)構(gòu)數(shù)組嵌套(nested)student結(jié)構(gòu)數(shù)組變量的結(jié)構(gòu)層次:studentnamescorescoursetiltecredits

2025/8/29ApplicationofMatlabLanguage85

2.4.9

訪問結(jié)構(gòu)數(shù)組變量的內(nèi)容格式:struc_array_varname.field_nameExam:>>student_name=student(1).namestudent_name=張聽說修改結(jié)構(gòu)數(shù)組變量的字段值:>>student(1).name=‘Newton’;>>student(1).name%Result?

2025/8/29ApplicationofMatlabLanguage86

2.4.9

訪問結(jié)構(gòu)數(shù)組變量的內(nèi)容(續(xù))cat函數(shù):排列結(jié)構(gòu)數(shù)組某字段的值格式:cat(dim,structurefield)dim=1,豎排;dim=2,橫排Exam:>>cat(1,student.scores)ans=55606580>>cat(2,student.scores)ans=55606580

2025/8/29ApplicationofMatlabLanguage87

2.4.9

訪問結(jié)構(gòu)數(shù)組變量的內(nèi)容(續(xù))計算平均值(使用mean函數(shù))計算每次考試的平均值>>average1=mean(cat(1,student.scores))average1=6070思考:如何計算每個學(xué)生成績的平均值?第3章Matlab數(shù)值運算在Matlab中,一切數(shù)據(jù)均以矩陣的形式出現(xiàn)。相比其他語言,MATLAB在矩陣運算方面具有強大的功能,它提供了多種運算和函數(shù)對矩陣進行操作。MATLAB的數(shù)值運算包括兩種:一種是針對整個矩陣的數(shù)學(xué)運算,稱之為矩陣運算;另一種是針對矩陣的每一個元素進行運算的函數(shù),稱之為矩陣元素的運算。3.1基本運算功能算術(shù)運算邏輯運算關(guān)系運算

2025/8/29ApplicationofMatlabLanguage89

2025/8/29ApplicationofMatlabLanguage90

3.1.1算術(shù)運算MATLAB數(shù)組支持線性代數(shù)中所有的矩陣運算。建立特有的數(shù)組運算符,如:“.*”、“./”等。

MATLAB數(shù)組運算符列表運算 運算符 含義說明

加 +相應(yīng)元素相加減 - 相應(yīng)元素相減乘 * 矩陣乘法點乘 .* 相應(yīng)元素相乘冪 ^ 矩陣冪運算點冪 .^ 相應(yīng)元素進行冪運算左除或右除 \或

矩陣左除或右除左點除或右點除.\或./ A的元素被B的對應(yīng)元素除

2025/8/29ApplicationofMatlabLanguage91

3.1.1算術(shù)運算(續(xù))

【例3-1】數(shù)組加減法>>a=zeros(2,3);>>a(:)=1:6;>>b=a+2.5b=3.50005.50007.50004.50006.50008.5000>>c=b-ac=2.50002.50002.50002.50002.50002.5000

2025/8/29ApplicationofMatlabLanguage92

3.1.1算術(shù)運算(續(xù))【例3-2】畫出y=1/(x+1)的函數(shù)曲線,x∈[0,100]。x=0:100;y=1./(x+1);plot(x,y);legend(‘y=1/(x+1)’);

2025/8/29ApplicationofMatlabLanguage93

3.1.1算術(shù)運算(續(xù))【例3-3】生成一個信號:x=sin(2*pi*t)+sin(4*pi*t)t=[0:199]./100;%采樣時間點%生成信號x=sin(2*pi*t)+sin(4*pi*t);plot(t,x);legend(‘x=sin(2*pi*t)+sin(4*pi*t)’);

2025/8/29ApplicationofMatlabLanguage94

3.1.1算術(shù)運算(續(xù))

2025/8/29ApplicationofMatlabLanguage95

3.1.1算術(shù)運算(續(xù))【例3-4】點冪“.^”舉例>>a=1:6a=123456>>b=reshape(a,2,3)b=135246>>a=a.^2a=149162536>>b=b.^2b=192541636

2025/8/29ApplicationofMatlabLanguage96

3.1.2邏輯運算

Matl

溫馨提示

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

評論

0/150

提交評論