MATLAB基礎(chǔ)與實(shí)例進(jìn)階-02_第1頁
MATLAB基礎(chǔ)與實(shí)例進(jìn)階-02_第2頁
MATLAB基礎(chǔ)與實(shí)例進(jìn)階-02_第3頁
MATLAB基礎(chǔ)與實(shí)例進(jìn)階-02_第4頁
MATLAB基礎(chǔ)與實(shí)例進(jìn)階-02_第5頁
已閱讀5頁,還剩126頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2023/2/4機(jī)械工業(yè)出版社Page1第2章基礎(chǔ)知識(shí)與基本運(yùn)算【學(xué)習(xí)目標(biāo)】熟悉MATLAB的基本數(shù)據(jù)類型熟悉MATLAB的基本運(yùn)算符掌握MATLAB的數(shù)組及基本運(yùn)算掌握MATLAB的矩陣及基本運(yùn)算2023/2/4機(jī)械工業(yè)出版社Page2第2章基礎(chǔ)知識(shí)與基本運(yùn)算MATLAB數(shù)據(jù)類型2.1MATLAB基本運(yùn)算符1.2MATLAB數(shù)組及其運(yùn)算1.3MATLAB矩陣及其運(yùn)算1.42023/2/4機(jī)械工業(yè)出版社Page32.1MATLAB數(shù)據(jù)類型2.1.1數(shù)值類型2.1.2邏輯類型2.1.3字符和字符串2.1.4函數(shù)句柄2.1.5結(jié)構(gòu)體2.1.6單元數(shù)組2023/2/4機(jī)械工業(yè)出版社Page4MATLAB數(shù)值類型包括整數(shù)、單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)。默認(rèn)情況下,MATLAB用雙精度浮點(diǎn)數(shù)來保存所有數(shù)值類型數(shù)據(jù)。2.1.1數(shù)值類型2023/2/4機(jī)械工業(yè)出版社Page5有符號(hào)整數(shù)int8:1字節(jié),-27-27-1int16:2字節(jié),-215-215-1int32:3字節(jié),-231-231-1int64:4字節(jié),-263-263-12.1.1數(shù)值類型——整數(shù)2023/2/4機(jī)械工業(yè)出版社Page6無符號(hào)整數(shù)uint8:1字節(jié),0-28-1uint16:2字節(jié),0-216-1uint32:3字節(jié),0-232-1uint64:4字節(jié),0-264-12.1.1數(shù)值類型——整數(shù)2023/2/4機(jī)械工業(yè)出版社Page7整數(shù)轉(zhuǎn)換函數(shù)int8:創(chuàng)建有符號(hào)8bit整數(shù)int16:創(chuàng)建有符號(hào)16bit整數(shù)int32:創(chuàng)建有符號(hào)32bit整數(shù)int64:創(chuàng)建有符號(hào)64bit整數(shù)uint8:創(chuàng)建無符號(hào)8bit整數(shù)uint16:創(chuàng)建無符號(hào)16bit整數(shù)uint32:創(chuàng)建無符號(hào)32bit整數(shù)uint64:創(chuàng)建無符號(hào)64bit整數(shù)2.1.1數(shù)值類型——整數(shù)2023/2/4機(jī)械工業(yè)出版社Page8整數(shù)運(yùn)算原則相同整型數(shù)據(jù)之間的運(yùn)算,結(jié)果為同種類型的整數(shù);不同類型整數(shù)之間不能進(jìn)行運(yùn)算;整數(shù)可以和雙精度標(biāo)量進(jìn)行數(shù)值運(yùn)算,結(jié)果為整數(shù);整數(shù)不能與不是標(biāo)量的雙精度數(shù)組進(jìn)行運(yùn)算2.1.1數(shù)值類型——整數(shù)2023/2/4機(jī)械工業(yè)出版社Page9整數(shù)最大值與最小值MATLAB提供了intmax和intmin兩個(gè)函數(shù)來查詢各種類型整數(shù)的最大值和最小值。當(dāng)數(shù)據(jù)的值超出了所要轉(zhuǎn)換類型的表示范圍時(shí),MATLAB會(huì)自動(dòng)將它們?cè)O(shè)置成對(duì)應(yīng)整數(shù)類型的最大值或最小值。2.1.1數(shù)值類型——整數(shù)2023/2/4機(jī)械工業(yè)出版社Page10【例2-1】創(chuàng)建一個(gè)int16類型的整數(shù)275,并將包含小數(shù)的浮點(diǎn)數(shù)275.49轉(zhuǎn)換為整數(shù)。2.1.1數(shù)值類型——整數(shù)>>x=int16(275)x=275>>y=275.49;>>int16(y)

ans=275>>y=y+0.01;>>int16(y)

ans=2762023/2/4機(jī)械工業(yè)出版社Page11【例2-2】利用intmax和intmin函數(shù)獲取整數(shù)最大值與最小值示例。2.1.1數(shù)值類型——整數(shù)>>intmax('int16')

ans=32767>>intmin('int8')

ans=-128>>x=int16(33000)x=32276>>x=int8(-350)x=-1282023/2/4機(jī)械工業(yè)出版社Page12單精度浮點(diǎn)數(shù)——32bit雙精度浮點(diǎn)數(shù)——64bit2.1.1數(shù)值類型——浮點(diǎn)數(shù)字節(jié)位代表功能31符號(hào)位(0代表正數(shù),1代表負(fù)數(shù))30-23指數(shù)位

0-27-122-01.f中的小數(shù)位f字節(jié)位代表功能63符號(hào)位(0代表整數(shù),1代表負(fù)數(shù))62-52指數(shù)位0-210-151-01.f中的小數(shù)位f2023/2/4機(jī)械工業(yè)出版社Page13創(chuàng)建浮點(diǎn)數(shù)

MATLAB默認(rèn)是以雙精度浮點(diǎn)數(shù)來保存數(shù)據(jù)的,所以我們可以使用賦值操作來創(chuàng)建一個(gè)double數(shù)據(jù),而創(chuàng)建單精度浮點(diǎn)數(shù)則必須使用single轉(zhuǎn)換函數(shù)。對(duì)于大于3.4028×1038或與小于-1.1755×1038的數(shù),需要用雙精度浮點(diǎn)數(shù)來表示。2.1.1數(shù)值類型——浮點(diǎn)數(shù)2023/2/4機(jī)械工業(yè)出版社Page14浮點(diǎn)數(shù)運(yùn)算原則單精度浮點(diǎn)數(shù)與float、double、char或logical類型數(shù)據(jù)運(yùn)算,結(jié)果為float;單精度浮點(diǎn)數(shù)不能int/uint類型數(shù)據(jù)運(yùn)算;雙精度浮點(diǎn)數(shù)與float類型數(shù)據(jù)運(yùn)算,結(jié)果為float類型;雙精度浮點(diǎn)數(shù)與int/uint類型數(shù)據(jù)運(yùn)算,結(jié)果為int/uint類型;雙精度浮點(diǎn)數(shù)與double、char、logical類型數(shù)據(jù)運(yùn)算,結(jié)果為double2.1.1數(shù)值類型——浮點(diǎn)數(shù)2023/2/4機(jī)械工業(yè)出版社Page15浮點(diǎn)數(shù)最大值與最小值MTALAB提供了realmax和realmin函數(shù)用于查詢單精度和雙精度浮點(diǎn)數(shù)所能表示的最大和最小值,函數(shù)參數(shù)指明查詢浮點(diǎn)數(shù)的類型,對(duì)于雙精度浮點(diǎn)數(shù),realmax和realmin函數(shù)可以不用指定參數(shù)。2.1.1數(shù)值類型——浮點(diǎn)數(shù)2023/2/4機(jī)械工業(yè)出版社Page16【例2-3】創(chuàng)建單精度和雙精度浮點(diǎn)數(shù)。2.1.1數(shù)值類型——浮點(diǎn)數(shù)>>x=single(120.45);>>whosxNameSizeBytesClassAttributesx1x14single

>>x=120.45;>>whosxNameSizeBytesClassAttributesx1x18double2023/2/4機(jī)械工業(yè)出版社Page17【例2-4】查詢浮點(diǎn)數(shù)最大值和最小值。2.1.1數(shù)值類型——浮點(diǎn)數(shù)>>realmax('single')%查詢單精度浮點(diǎn)數(shù)的最大值

ans=3.4028e+038>>realmin('single')%查詢單精度浮點(diǎn)數(shù)的最小值

ans=1.1755e-038>>realmax %查詢雙精度浮點(diǎn)數(shù)的最大值

ans=1.7977e+308>>realmin %查詢雙精度浮點(diǎn)數(shù)的最小值

ans=2.2251e-3082023/2/4機(jī)械工業(yè)出版社Page18MATLAB用“0”和“1”分別代表邏輯“假”和邏輯“真”。邏輯類型常以標(biāo)量形式出現(xiàn),但也可以是邏輯數(shù)組。MATLAB程序中,用戶在使用各種控制語句的時(shí)候,經(jīng)常需要使用返回的邏輯值作為控制語句的判斷條件。2.1.2邏輯類型2023/2/4機(jī)械工業(yè)出版社Page19識(shí)別邏輯數(shù)據(jù)函數(shù)五個(gè)函數(shù)可用于邏輯數(shù)據(jù)的判斷:whos(x):顯示數(shù)據(jù)x的數(shù)值和數(shù)據(jù)類型;islogical(x):若x是邏輯數(shù)組則返回“真”;isa(x,‘logical’):若x是邏輯數(shù)組返回“真”;class(x):若x是邏輯數(shù)組返回“真”;cellfun(‘islogical’,x):檢查數(shù)組x的元素是否是邏輯數(shù)據(jù)。2.1.2邏輯類型2023/2/4機(jī)械工業(yè)出版社Page20返回結(jié)果為邏輯數(shù)據(jù)的函數(shù)及運(yùn)算符true:設(shè)置數(shù)據(jù)值為邏輯“真”;false:設(shè)置數(shù)據(jù)值為邏輯“假”;logical:將數(shù)據(jù)轉(zhuǎn)換為邏輯值;&、|,~,xor,any、all、&&和||;=,~=,<,>,<=和>=:關(guān)系運(yùn)算;所有is*函數(shù):測(cè)試運(yùn)算函數(shù);strcmp,strncmp,strcmpi和strncmpi:字符串比較操作函數(shù)。2.1.2邏輯類型2023/2/4機(jī)械工業(yè)出版社Page21【例2-5】利用關(guān)系運(yùn)算符以及isstrprop和xor函數(shù)創(chuàng)建邏輯數(shù)組。2.1.2邏輯類型>>[20,30,40,50,60]>35

ans=00111>>A=isstrprop('abc123def','alpha') A=111000111>>xor([10'ab'2.4],[00'ab',0])

ans=100012023/2/4機(jī)械工業(yè)出版社Page22構(gòu)造字符和字符串用char表示MATLAB字符;用2字節(jié)的Unicode統(tǒng)一字符編碼來存儲(chǔ),一般用單引號(hào)來定義一個(gè)字符變量;用string表示MATLAB字符串;可以用字符數(shù)組或字串單元來創(chuàng)建字符串;字符串用一對(duì)單引號(hào)將多個(gè)字符括起來構(gòu)建2.1.3字符和字符串>>str='Hello,MATLAB!';>>whos

strNameSizeBytesClassAttributes

str1x1326char2023/2/4機(jī)械工業(yè)出版社Page23格式化字符串sprintf:按照指定格式將數(shù)據(jù)寫入輸出字符串;fprintf:按照指定格式將數(shù)據(jù)寫入輸出文件或命令窗口;warning:在警告信息中顯示格式化數(shù)據(jù);error:在錯(cuò)誤信息中顯示格式化的數(shù)據(jù);assert:在條件不滿足時(shí),生成錯(cuò)誤信息;MException:捕獲錯(cuò)誤信息。2.1.3字符和字符串2023/2/4機(jī)械工業(yè)出版社Page24格式化字符串——函數(shù)語法形式

2.1.3字符和字符串functionname(…,format_string,value1,value2,…,valueN)format_string:包含輸出字符串的基本內(nèi)容和需要轉(zhuǎn)換的輸出格式字符(如%d、%s等);value1,value2,valueN:對(duì)應(yīng)format_string

中第一個(gè)至第N個(gè)需要轉(zhuǎn)換格式的數(shù)值。>>sprintf('Average%sscoreof%dindividualis%2.fpoints.','english',60,83.5)ans=Averageenglishscoreof60individualis83.50points.2023/2/4機(jī)械工業(yè)出版社Page25字符串比較MATLAB提供了三種字符串比較方法:比較兩個(gè)字符串是否完全相同或部分相同;逐字符比較兩個(gè)字符串是否相同;檢查字符串中的單個(gè)字符的類別歸屬。2.1.3字符和字符串2023/2/4機(jī)械工業(yè)出版社Page26字符串比較——比較字符串strcmp:比較兩個(gè)字符串是否完全相同;strncmp:比較兩個(gè)字符串的前n個(gè)字符是否相同;strcmpi:與strcmp類似,但strcmpi會(huì)忽略字母大小寫的區(qū)別;strcnmpi:與strcnmp類似,但strcnmpi會(huì)忽略字母大小寫的區(qū)別;2.1.3字符和字符串2023/2/4機(jī)械工業(yè)出版社Page27【例2-6】利用字符串比較函數(shù)判斷字符串是否相同。2.1.3字符和字符串>>str1='hello';str2='help';>>strcmp(str1,str2)

ans=0>>strncmp(str1,str2,3)

ans=1>>str3='Help';>>strcmpi(str2,str3)

ans=12023/2/4機(jī)械工業(yè)出版社Page28字符串比較——比較字符串中字符MATLAB利用關(guān)系運(yùn)算符“==”來實(shí)現(xiàn)兩個(gè)字符串逐個(gè)字符的比較;待比較的兩個(gè)字符串長度必須相等,或者其中有一個(gè)是單字符。

2.1.3字符和字符串2023/2/4機(jī)械工業(yè)出版社Page29【例2-7】比較兩個(gè)字符串里的字符是否相同。2.1.3字符和字符串>>str1='hello';str2='help';str3='Help';>>str1==str2%對(duì)長度不相等的字符進(jìn)行比較???Errorusing==>eq

%錯(cuò)誤信息Matrixdimensionsmustagree.>>str2==str3

ans=0111>>str4='h';>>str1==str4%字符串與單個(gè)字符比較

ans=100002023/2/4機(jī)械工業(yè)出版社Page30字符串比較——判別字符串中字符類別isletter:判斷字符串中的每個(gè)字符是否為英文字母;isspace:判斷字符串中的字符是否屬于格式字符(空格、制表符、回車和換行等);isstrprop:逐字符檢測(cè)字符串里的字符是否屬于指定范圍(字母、字母和數(shù)字、大寫或小寫、十進(jìn)制數(shù)、十六進(jìn)制數(shù)等)。2.1.3字符和字符串2023/2/4機(jī)械工業(yè)出版社Page31字符串查找strfind(str,pattern):在字符串str中查找pattern子串,返回字串出現(xiàn)位置;findstr(str1,str2):查找字符串str1和str2,返回較短字符串在較長字符串中出現(xiàn)的位置;strmatch(str,strarray):從字符串?dāng)?shù)組strarray中查找所有以字符串str開頭的字符串Strtok(str,char):返回字符串str中由char指定的字符前的部分和之后的部分,默認(rèn)的char為空格、制表符或換行符。后兩個(gè)函數(shù)在MATLAB將來版本中將移除!2.1.3字符和字符串2023/2/4機(jī)械工業(yè)出版社Page32【例2-8】利用strfind函數(shù)在字符串'himatlab2010!'中查找字符串'mat',并利用strtok函數(shù)將該字符串以空格分隔。2.1.3字符和字符串>>str1='himatlab2010!';>>str2='mat';>>strfind(str1,str2)

ans=4>>[token,remain]=strtok(str1)token=hiremain=matlab2010!2023/2/4機(jī)械工業(yè)出版社Page33字符串替換strrep(str1,str2,str3):函數(shù)將字符串str1中所有str2字串用str3來替換;strrep對(duì)字母的大小寫敏感,只能替換str1中與str2完全一致的字串。2.1.3字符和字符串2023/2/4機(jī)械工業(yè)出版社Page34【例2-9】將字符串'himatlab2010!'中的子字符串'mat'替換為‘Mat’。2.1.3字符和字符串>>str1='himatlab2010!';>>str2='mat';>>str3='Mat';>>strrep(str1,str2,str3)

ans=hiMatlab2010!2023/2/4機(jī)械工業(yè)出版社Page35函數(shù)句柄(Functionhandle)是MATLAB的一種數(shù)據(jù)類型,他實(shí)際上提供了一種間接調(diào)用函數(shù)的方法。使用函數(shù)句柄,方便了實(shí)現(xiàn)函數(shù)間互相調(diào)用,可以拓寬子函數(shù)的使用范圍,提高函數(shù)調(diào)用的可靠性,減少程序設(shè)計(jì)中的冗余和提高重復(fù)執(zhí)行的效率。2.1.4函數(shù)句柄2023/2/4機(jī)械工業(yè)出版社Page36創(chuàng)建函數(shù)句柄創(chuàng)建函數(shù)句柄的語法形式如下:h=@functionname其中:h:為保存函數(shù)句柄的變量;@:是句柄創(chuàng)建操作符;

functionname:MATLAB內(nèi)部函數(shù)名稱或函數(shù)所對(duì)應(yīng)的M文件的名稱。2.1.4函數(shù)句柄2023/2/4機(jī)械工業(yè)出版社Page37使用函數(shù)句柄創(chuàng)建函數(shù)句柄并保存變量后,就可以通過函數(shù)句柄變量來調(diào)用句柄所關(guān)聯(lián)的函數(shù)。通過函數(shù)句柄調(diào)用函數(shù)時(shí),也需要指定函數(shù)的輸入?yún)?shù);沒有輸入?yún)?shù)的函數(shù),在使用句柄調(diào)用時(shí),要在句柄變量后加上空的圓括號(hào);內(nèi)部函數(shù)名稱或函數(shù)所對(duì)應(yīng)的M文件的名稱。2.1.4函數(shù)句柄2023/2/4機(jī)械工業(yè)出版社Page38函數(shù)句柄處理函數(shù)functions:返回函數(shù)句柄的描述信息;func2str:將函數(shù)句柄轉(zhuǎn)換為函數(shù)名稱字符串str2func:將字符串代表的函數(shù)轉(zhuǎn)換為函數(shù)句柄;save:保存函數(shù)句柄到MAT文件中;load:從MAT文件中讀入函數(shù)句柄到當(dāng)前工作空間;isa:判斷一個(gè)變量是否包含和一個(gè)函數(shù)句柄isequal:判斷兩個(gè)函數(shù)句柄是否指向同一個(gè)函數(shù)。2.1.4函數(shù)句柄2023/2/4機(jī)械工業(yè)出版社Page39【例2-10】創(chuàng)建cos函數(shù)的句柄,并利用該函數(shù)句柄計(jì)算數(shù)組的余弦值。2.1.4函數(shù)句柄>>h=@cos;>>v=0:0.2*pi:pi;>>h(v)ans=1.00000.80900.3090-0.3090-0.8090-1.00002023/2/4機(jī)械工業(yè)出版社Page40結(jié)構(gòu)體相當(dāng)于一個(gè)數(shù)據(jù)容器,把多個(gè)相關(guān)聯(lián)的不同類型的數(shù)據(jù)封裝在一個(gè)結(jié)構(gòu)體對(duì)象中。結(jié)構(gòu)體是利用域而非下標(biāo)索引來對(duì)結(jié)構(gòu)元素進(jìn)行尋址;用點(diǎn)號(hào)來訪問域中的數(shù)據(jù)。2.1.5結(jié)構(gòu)體2023/2/4機(jī)械工業(yè)出版社Page41賦值語句創(chuàng)建結(jié)構(gòu)體賦值表達(dá)式左邊代表了結(jié)構(gòu)體的字段變量名,右邊是給變量所賦予的值。在對(duì)結(jié)構(gòu)體的字段進(jìn)行賦值時(shí),該字段會(huì)自動(dòng)創(chuàng)建。借助圓括號(hào)和索引,用戶可輕松創(chuàng)建擁有相同結(jié)構(gòu)的結(jié)構(gòu)體數(shù)組對(duì)象。2.1.5結(jié)構(gòu)體2023/2/4機(jī)械工業(yè)出版社Page42【例2-11】利用賦值語句創(chuàng)建結(jié)構(gòu)體示例。2.1.5結(jié)構(gòu)體>>='Tom';>>person.sex='male';>>person.age=20;>>personperson=name:'Tom'sex:'male'age:20>>person(2).name='Jack';>>person(2).sex='male';>>person(2).age=18;>>personperson=1x2structarraywithfields:namesexage2023/2/4機(jī)械工業(yè)出版社Page43struct函數(shù)創(chuàng)建結(jié)構(gòu)體函數(shù)的語法形式如下

:sArray=struct('field1',values1,'field2',values2,...)其中:filed1、field2:結(jié)構(gòu)體包含的第一個(gè)和第二個(gè)字段value1、value2:結(jié)構(gòu)體第一個(gè)字段和第二個(gè)字段的數(shù)值sArray:所創(chuàng)建的結(jié)構(gòu)體對(duì)象名sArray2.1.5結(jié)構(gòu)體2023/2/4機(jī)械工業(yè)出版社Page44【例2-12】struct函數(shù)創(chuàng)建結(jié)構(gòu)體示例。2.1.5結(jié)構(gòu)體>>person=struct('name','Tom','sex','male','age',20)person=name:'Tom'sex:'male'age:202023/2/4機(jī)械工業(yè)出版社Page45增加結(jié)構(gòu)體字段當(dāng)為結(jié)構(gòu)體數(shù)組中的任意一個(gè)元素定義一個(gè)新的字段時(shí),該數(shù)組中的所有元素都會(huì)增加一個(gè)新的字段。刪除結(jié)構(gòu)體字段rmfield函數(shù)來刪除結(jié)構(gòu)體的字段;strArray2=rmfield(strArray,'field')參數(shù)分別為結(jié)構(gòu)體對(duì)象和待刪除字段;2.1.5結(jié)構(gòu)體2023/2/4機(jī)械工業(yè)出版社Page46【例2-13(14)】修改結(jié)構(gòu)體示例。2.1.5結(jié)構(gòu)體>>person(2).height=175;>>person(1)ans=name:'Tom'sex:'male'age:'20'height:[]>>person(2)ans=name:'Jack'sex:'male'age:18height:175>>newperson=

rmfield(person,'sex')newperson=1x2structarraywithfields:nameageheight2023/2/4機(jī)械工業(yè)出版社Page47訪問結(jié)構(gòu)體MATLAB中對(duì)結(jié)構(gòu)體成員字段的訪問與C、C++和Java中對(duì)結(jié)構(gòu)體成員變量的訪問很類似,他們都是在結(jié)構(gòu)體數(shù)組對(duì)象后通過“.”運(yùn)算符和字段名來實(shí)現(xiàn)對(duì)字段的訪問。MATLAB是通過圓括號(hào)()與索引下標(biāo)來訪問結(jié)構(gòu)體數(shù)組元素。2.1.5結(jié)構(gòu)體2023/2/4機(jī)械工業(yè)出版社Page48【例2-15】利用圓括號(hào)和點(diǎn)運(yùn)算符訪問結(jié)果體數(shù)組person中的元素及字段。2.1.5結(jié)構(gòu)體>>person(1).name

ans=Tom>>person(2).height

ans=175>>fori=1:length(person)

disp(person(i).name);endTomjack

2023/2/4機(jī)械工業(yè)出版社Page49結(jié)構(gòu)體嵌套

結(jié)構(gòu)體可以包含多個(gè)字段,并且每個(gè)字段都可以存儲(chǔ)不同類型的數(shù)據(jù),包括結(jié)構(gòu)體類型的數(shù)據(jù)。當(dāng)結(jié)構(gòu)體的字段也是結(jié)構(gòu)體時(shí),就是這里所介紹的結(jié)構(gòu)體嵌套。

2.1.6結(jié)構(gòu)體2023/2/4機(jī)械工業(yè)出版社Page50【例2-16】為結(jié)構(gòu)體數(shù)組person增加一個(gè)結(jié)構(gòu)體類型的字段parent,該字段包含father和mother兩個(gè)字段。2.1.5結(jié)構(gòu)體>>person(1).parent.father='Joson';>>person(1).parent.mother='Jerry';>>person(1)ans=name:'Tom'sex:'man'age:'20'height:[]parent:[1x1struct]>>person(1).parentans=father:'Joson'mother:'Jerry'2023/2/4機(jī)械工業(yè)出版社Page51單元數(shù)組是MATLAB中的一種特殊數(shù)據(jù)結(jié)構(gòu)。與結(jié)構(gòu)體類型類似,單元數(shù)組也可以存儲(chǔ)不同類型、不同大小的數(shù)據(jù)。不同的是,單元數(shù)組的一個(gè)單元既可以包含一個(gè)整數(shù)數(shù)組或浮點(diǎn)數(shù)數(shù)組,也可以包含一個(gè)字符數(shù)組或是復(fù)數(shù)數(shù)組。2.1.6單元數(shù)組2023/2/4機(jī)械工業(yè)出版社Page522.1.6單元數(shù)組cell1,1cell1,2cell2,1cell2,22023/2/4機(jī)械工業(yè)出版社Page53賦值語句創(chuàng)建單元數(shù)組內(nèi)容下標(biāo)索引賦值:花括號(hào)出現(xiàn)在賦值語句左側(cè)A{1,2}=[241;563;789];

單元下標(biāo)索引賦值:花括號(hào)出現(xiàn)賦值語句右側(cè)時(shí),左側(cè)用圓括號(hào)來標(biāo)識(shí)索引

A(2,1)={[1+i*2-2;4-i*5i*6]};

2.1.6單元數(shù)組2023/2/4機(jī)械工業(yè)出版社Page54【例2-17】賦值語句創(chuàng)建單元數(shù)組示例。2.1.6單元數(shù)組>>A{1,1}=char('Hello,MATLAB!','IloveMATLAB.','WelcometoMATworld!');>>A{1,2}=[241;563;789];>>A(2,1)={[1+i*2-2;4-i*5i*6]};A(2,2)={[]};

A=[3x21char][3x3double][2x2double] []>>A(1,2)ans=[3x3double]>>A{1,2}ans=2415637892023/2/4機(jī)械工業(yè)出版社Page55cell函數(shù)創(chuàng)建結(jié)構(gòu)體函數(shù)的語法形式如下

cellarrName=cell(m,n)該語句創(chuàng)建了一個(gè)包含m行n列的單元數(shù)組,將其保存在cellarrName中。說明:利用cell函數(shù)創(chuàng)建單元數(shù)組后,還需對(duì)數(shù)組的每一個(gè)單元進(jìn)行賦值。

2.1.6單元數(shù)組2023/2/4機(jī)械工業(yè)出版社Page56【例2-18】cell函數(shù)創(chuàng)建單元數(shù)組示例。2.1.6單元數(shù)組>>B=cell(2,2);>>B{1,1}=rand(2,2);>>BB=[2x2double][][][]>>B{1,1}ans=0.81470.12700.90580.91342023/2/4機(jī)械工業(yè)出版社Page57擴(kuò)展單元數(shù)組利用賦值語句給單元數(shù)組中的單位賦值,如果這個(gè)單元不存在,MATLAB會(huì)自動(dòng)創(chuàng)建對(duì)應(yīng)的單元。刪除結(jié)構(gòu)體字段如果要?jiǎng)h除單元數(shù)組中的部分元素,只要將空值賦給這一部分元素即可;若要?jiǎng)h除單元數(shù)組的所有元素,調(diào)用clear命令即可。2.1.6單元數(shù)組2023/2/4機(jī)械工業(yè)出版社Page58【例2-19】擴(kuò)展和刪除單元數(shù)組示例。2.1.6單元數(shù)組>>A{3,3}=rand(2,2);>>AA=[3x21char][3x3double] [][2x2double] [] [][] [][2x2double]>>A(3,:)=[];>>AA=[3x21char][3x3double][][2x2double][][]2023/2/4機(jī)械工業(yè)出版社Page59訪問單元數(shù)組利用花括號(hào)標(biāo)識(shí)的內(nèi)容下標(biāo)索引能夠直接訪問單元數(shù)據(jù)內(nèi)的數(shù)據(jù)。利用圓括號(hào)標(biāo)識(shí)的單元下標(biāo)索引只能定位單元數(shù)組中單元的位置,其返回結(jié)果仍然是一個(gè)單元類型的數(shù)組若想得到單元數(shù)組中某個(gè)單元內(nèi)容的子集,可通過兩套下標(biāo)來達(dá)到目的。2.1.6單元數(shù)組2023/2/4機(jī)械工業(yè)出版社Page60【例2-20】訪問單元數(shù)組內(nèi)部數(shù)據(jù)示例。2.1.6單元數(shù)組>>A{1,1}=char('Hello,MATLAB!','IloveMATLAB.','WelcometoMATworld!');>>A{1,2}=[241;563;789];>>A(2,1)={[1+i*2-2;4-i*5i*6]};A(2,2)={[]};>>A{1,2}(1,2)

ans=4>>B=A(1,2)B=[3x3double]%B的大小為1×1>>B{1,1}

%返回B(1,1)中的內(nèi)容

ans=241;563;789>>B{1,1}(3,3)

%返回B(1,1)中(3,3)位置的內(nèi)容

ans=92023/2/4機(jī)械工業(yè)出版社Page61結(jié)構(gòu)體嵌套和結(jié)構(gòu)體類型類似,單元數(shù)組也支持嵌套。嵌套單元數(shù)組的創(chuàng)建及各種操作與一般單元數(shù)組類似,都是通過花括號(hào)來指定單元內(nèi)容。2.1.6單元數(shù)組2023/2/4機(jī)械工業(yè)出版社Page62【例2-21】創(chuàng)建嵌套單元數(shù)組示例。2.1.6單元數(shù)組>>A{1,1}=char('Hello,MATLAB!','IloveMATLAB.','WelcometoMATworld!');>>A{1,2}=[241;563;789];A{2,1}=[1+i*2-2;4-i*5i*6];>>A{2,2}(1,1)={‘Hi,Everyone!’};A{2,2}(1,2)={rand(2,2)};>>A{2,2}(2,2)={cell(2,2)};A=[3x21char][3x3double][]{2x2cell}>>A{2,2}ans='Hi,Everyone!'[2x2double][]{2x2cell}2023/2/4機(jī)械工業(yè)出版社Page632.2基本運(yùn)算符2.2.1算術(shù)運(yùn)算符2.2.2關(guān)系運(yùn)算符2.2.3邏輯運(yùn)算符2.2.4運(yùn)算符優(yōu)先級(jí)2023/2/4機(jī)械工業(yè)出版社Page64算術(shù)運(yùn)算符用于實(shí)現(xiàn)數(shù)值的計(jì)算,按作用對(duì)象的不同,可以將MATLAB算符運(yùn)算符可分為數(shù)組運(yùn)算符和矩陣運(yùn)算符兩類。2.2.1算術(shù)運(yùn)算符2023/2/4機(jī)械工業(yè)出版社Page65數(shù)組運(yùn)算符+:數(shù)組相加運(yùn)算符;-

:數(shù)組相減運(yùn)算符;.*

:數(shù)組相乘運(yùn)算符;./:數(shù)組右除運(yùn)算符;.\:數(shù)組左除運(yùn)算符;.^

:數(shù)組乘方運(yùn)算符;.’

:數(shù)組轉(zhuǎn)置運(yùn)算符;2.2.1算術(shù)運(yùn)算符算術(shù)運(yùn)算,是兩個(gè)同維數(shù)組對(duì)應(yīng)元素之間的運(yùn)算。當(dāng)一個(gè)標(biāo)量與數(shù)組進(jìn)行算術(shù)運(yùn)算,標(biāo)量與數(shù)組每個(gè)元素都進(jìn)行運(yùn)算。2023/2/4機(jī)械工業(yè)出版社Page66矩陣運(yùn)算符+:矩陣相加運(yùn)算符;-

:矩陣相減運(yùn)算符;*:矩陣相乘運(yùn)算符;/:矩陣右除運(yùn)算符;\

:矩陣左除運(yùn)算符;^

:矩陣乘方運(yùn)算符;’:矩陣轉(zhuǎn)置運(yùn)算符;::矩陣索引運(yùn)算符,用于增量操作。2.2.1算術(shù)運(yùn)算符

MATLAB矩陣運(yùn)算是按線性代數(shù)的規(guī)則進(jìn)行運(yùn)算,利用矩陣運(yùn)算符對(duì)矩陣進(jìn)行操作時(shí)矩陣的維數(shù)要滿足相關(guān)運(yùn)算條件。。2023/2/4機(jī)械工業(yè)出版社Page67關(guān)系運(yùn)算符用于比較兩個(gè)同維數(shù)組或同維向量的對(duì)應(yīng)元素,結(jié)果為與操作數(shù)同維的邏輯數(shù)組,數(shù)組的每個(gè)元素為邏輯真或邏輯假。

2.2.2關(guān)系運(yùn)算符2023/2/4機(jī)械工業(yè)出版社Page68小于運(yùn)算符<

,當(dāng)左操作數(shù)小于右操作數(shù)時(shí)返回邏輯真,否則返回邏輯假;小于等于運(yùn)算符<=:當(dāng)左操作數(shù)小于等于右操作數(shù)時(shí)返回邏輯真,否則返回邏輯假大于運(yùn)算符>

:當(dāng)左操作數(shù)大于右操作數(shù)時(shí)返回邏輯真,否則返回邏輯假;2.2.2關(guān)系運(yùn)算符2023/2/4機(jī)械工業(yè)出版社Page69大于等于運(yùn)算符>=:當(dāng)左操作數(shù)大于等于右操作數(shù)時(shí)返回邏輯真,否則返回邏輯假;等于操作符==

:當(dāng)左操作數(shù)與右操作數(shù)相等時(shí)返回邏輯真,否則返回邏輯假;不等于操作符~=:當(dāng)左操作數(shù)與右操作數(shù)不相等時(shí)返回邏輯真,否則返回邏輯假。2.2.2關(guān)系運(yùn)算符2023/2/4機(jī)械工業(yè)出版社Page70【例2-22】關(guān)系運(yùn)算符使用示例。2.2.2關(guān)系運(yùn)算符>>A=rand(3,3)A=0.42180.95950.84910.91570.65570.93400.79220.03570.6787>>B=rand(3,3)B=0.75770.65550.03180.74310.17120.27690.39220.70600.0462>>A>Bans=0111111012023/2/4機(jī)械工業(yè)出版社Page71

MATLAB包含三種類型的邏輯運(yùn)算:逐元素邏輯運(yùn)算、捷徑邏輯運(yùn)算和逐位邏輯運(yùn)算,其中前面兩類以運(yùn)算符的形式提供。2.2.3邏輯運(yùn)算符2023/2/4機(jī)械工業(yè)出版社Page72逐元素邏輯運(yùn)算符邏輯與&

:當(dāng)左操作數(shù)和右操作數(shù)都為邏輯“真”時(shí),返回邏輯“真”,否則返回邏輯“假”;邏輯或|:當(dāng)左操作數(shù)或右操作數(shù)為邏輯“真”時(shí),返回邏輯“真”,否則返回邏輯“假”邏輯非~

:單目運(yùn)算符,當(dāng)操作數(shù)為邏輯“真”或非零時(shí),返回邏輯“假”,否則返回邏輯“真”。2.2.3邏輯運(yùn)算符2023/2/4機(jī)械工業(yè)出版社Page73捷徑邏輯運(yùn)算符邏輯與&&:當(dāng)左操作數(shù)為邏輯“假”時(shí),不再對(duì)右操作數(shù)進(jìn)行判斷,直接返回邏輯“假”,否則同逐元素邏輯與(&);邏輯或||:當(dāng)左操作數(shù)為邏輯“真”時(shí),不再對(duì)右操作數(shù)進(jìn)行判斷,直接返回邏輯“真”,否則同逐元素邏輯或(|)。2.2.3邏輯運(yùn)算符2023/2/4機(jī)械工業(yè)出版社Page74同C、C++等高級(jí)編程語言一樣,MATLAB對(duì)各種運(yùn)算符的優(yōu)先級(jí)也作了規(guī)定。在進(jìn)行運(yùn)算時(shí),遵循高優(yōu)先級(jí)的運(yùn)算符先于低優(yōu)先級(jí)運(yùn)算符的計(jì)算,相同優(yōu)先級(jí)的運(yùn)算符的計(jì)算遵從左到右的原則。

MATLAB的運(yùn)算符共有11個(gè)優(yōu)先級(jí)。2.2.4運(yùn)算符優(yōu)先級(jí)2023/2/4機(jī)械工業(yè)出版社Page751.小括號(hào)(());2.轉(zhuǎn)置和乘冪(.’、.^、’、^);3.一元加/減運(yùn)算(+、-)和邏輯非(~);4.乘(*),除(/、\),點(diǎn)乘(.*)、點(diǎn)除(./、.\);5.加(+)、減(-);6.冒號(hào)運(yùn)算(:);7.關(guān)系運(yùn)算(>、>=、<、<=、==、~=);

2.2.4運(yùn)算符優(yōu)先級(jí)2023/2/4機(jī)械工業(yè)出版社Page768.逐元素邏輯與(&);9.逐元素邏輯或(|);10.捷徑邏輯與(&&);11.捷徑邏輯或(||)。2.2.4運(yùn)算符優(yōu)先級(jí)在所有運(yùn)算符中,括號(hào)運(yùn)算符優(yōu)先級(jí)最高,其次是各種算術(shù)運(yùn)算符,然后是關(guān)系運(yùn)算符,優(yōu)先級(jí)最低的是邏輯運(yùn)算符。2023/2/4機(jī)械工業(yè)出版社Page772.3數(shù)組及其運(yùn)算2.3.1數(shù)組的創(chuàng)建2.3.2數(shù)組元素的訪問2.3.3數(shù)組操作2.3.4數(shù)組運(yùn)算2.3.5多維數(shù)組2023/2/4機(jī)械工業(yè)出版社Page78按照數(shù)組排列方式和元素個(gè)數(shù)的不同,可以將MATLAB數(shù)組分為空數(shù)組、一維數(shù)組、二維數(shù)組和多維數(shù)組。MATLAB一般使用方括號(hào)、逗號(hào)、空格和分號(hào)來創(chuàng)建數(shù)組。方括號(hào)中給出數(shù)組的所有元素,不同行之間用分號(hào)分隔,同一行不同元素之間用逗號(hào)和空格分隔。2.3.1數(shù)組的創(chuàng)建2023/2/4機(jī)械工業(yè)出版社Page79創(chuàng)建空數(shù)組A=[]創(chuàng)建一維數(shù)組創(chuàng)建一維行向量,把所有用空格或逗號(hào)分隔的元素用方括號(hào)括起來;創(chuàng)建一維列向量,把所有用分隔分隔的元素用方括號(hào)括起來;利用轉(zhuǎn)置運(yùn)算符將行向量轉(zhuǎn)換為列向量。2.3.1數(shù)組的創(chuàng)建2023/2/4機(jī)械工業(yè)出版社Page80創(chuàng)建一維數(shù)組通過冒號(hào)運(yùn)算符(:)來創(chuàng)建等差向量

varName=startVal

:step:stopVal通過linspace函數(shù)創(chuàng)建等差向量;通過logspace函數(shù)創(chuàng)建等比向量;2.3.1數(shù)組的創(chuàng)建2023/2/4機(jī)械工業(yè)出版社Page81創(chuàng)建二維數(shù)組二維數(shù)組的創(chuàng)建與一維數(shù)組類似,也是利用方括號(hào)、分號(hào)、逗號(hào)和空格將元素進(jìn)行分隔和組合來構(gòu)成數(shù)組。其中,方括號(hào)中包含所有元素,不同行元素之間用分號(hào)分隔,同一行元素之間用逗號(hào)或空格間隔??梢岳妹疤?hào)和函數(shù)來創(chuàng)建二維數(shù)組。2.3.1數(shù)組的創(chuàng)建2023/2/4機(jī)械工業(yè)出版社Page82【例2-23】創(chuàng)建一維數(shù)組示例。2.3.1數(shù)組的創(chuàng)建>>A=[]%創(chuàng)建空數(shù)組A=[]>>A=[1357]%創(chuàng)建一維行向量A=1357>>A=[1;3;5;7]%創(chuàng)建一維列向量A=1357>>A=1:2:7A=13572023/2/4機(jī)械工業(yè)出版社Page83【例2-24】創(chuàng)建二維數(shù)組示例。2.3.1數(shù)組的創(chuàng)建>>A=[123;456;789]A=123456789>>B=[135;4:2:8;linspace(2,10,3)]B=13546826102023/2/4機(jī)械工業(yè)出版社Page84給定一個(gè)一維數(shù)組A,可以用A(n)來訪問數(shù)組A的第n個(gè)元素,若要同時(shí)訪問數(shù)組A的多個(gè)元素,可以利用冒號(hào)操作符(:),如A(1:3)會(huì)返回?cái)?shù)組第1至第3個(gè)元素。對(duì)于二維數(shù)組,MATLAB提供了雙下標(biāo)索引和單下標(biāo)索引兩種方式來訪問數(shù)組元素。2.3.2數(shù)組元素的訪問2023/2/4機(jī)械工業(yè)出版社Page85雙下標(biāo)索引用兩個(gè)數(shù)字來定位元素的位置,第一個(gè)數(shù)字指定元素所在的行,第二個(gè)數(shù)字指定元素所在的列單下標(biāo)索引只用一個(gè)數(shù)字來指定數(shù)組元素的位置

2.3.2數(shù)組元素的訪問2023/2/4機(jī)械工業(yè)出版社Page86單雙下標(biāo)索引轉(zhuǎn)換函數(shù)

ind=sub2ind(size,x,y)[x,y]=ind2sub(size,ind)其中:size:一個(gè)1行2列的數(shù)組,指定數(shù)組的尺寸大?。粁、y:雙下標(biāo)索引值;ind:單下標(biāo)索引值。2.3.2數(shù)組元素的訪問2023/2/4機(jī)械工業(yè)出版社Page87【例2-25】二維數(shù)組訪問示例。2.3.2數(shù)組元素的訪問>>A=rand(3,4)%隨機(jī)生成一個(gè)3行4列的數(shù)組A=0.09710.31710.43870.79520.82350.95020.38160.18690.69480.03440.76550.4898>>A(2,3)

ans=0.3816%訪問第2行第3列元素>>A(8)

ans=0.3816%訪問下標(biāo)為8的元素>>ind=sub2ind([3,4],2,3)%雙->單下標(biāo)索引

ind=8>>[x,y]=ind2sub(size(A),8)%單->雙下標(biāo)索引x=2y=32023/2/4機(jī)械工業(yè)出版社Page88數(shù)組的基本操作包括數(shù)組的載入與保存、獲取數(shù)組屬性、改變數(shù)組結(jié)構(gòu)(伸縮數(shù)組)、改變數(shù)組形狀、數(shù)組排序和數(shù)組查找等。2.3.3數(shù)組操作2023/2/4機(jī)械工業(yè)出版社Page89數(shù)組載入與保存save<filename><var1><var2>…<varN>將工作區(qū)中的變量var1、var2…varN保存到filename指定的mat文件中l(wèi)oad<filename><var1><var2>…<varN>將存儲(chǔ)在filename.mat文件中的var1、var2…varN載入到工作區(qū)中。2.3.3數(shù)組操作2023/2/4機(jī)械工業(yè)出版社Page90獲取數(shù)組排列結(jié)構(gòu)isempty:判斷某個(gè)數(shù)組是否是空數(shù)組;isscalar:判斷某個(gè)數(shù)組是否是單元素的標(biāo)量數(shù)組;isvector:判斷某個(gè)數(shù)組是否是一維向量數(shù)組issparse:判斷某個(gè)數(shù)組是否是稀疏矩陣。2.3.3數(shù)組操作2023/2/4機(jī)械工業(yè)出版社Page91獲取數(shù)組大小size:獲取數(shù)組行列數(shù),返回值是一個(gè)1行2列的一維向量;length:獲取數(shù)組的長度,當(dāng)數(shù)組是一維數(shù)組時(shí),返回值為數(shù)組中包含元素的個(gè)數(shù);若數(shù)組是二維數(shù)組,返回行數(shù)與列數(shù)中較大的那一個(gè)值;numel:返回?cái)?shù)組元素的總個(gè)數(shù),對(duì)于一個(gè)m行n列的二維數(shù)組,函數(shù)返回值為m×n。2.3.3數(shù)組操作2023/2/4機(jī)械工業(yè)出版社Page92獲取數(shù)組數(shù)據(jù)類型isnumeric:判斷數(shù)組元素是否是數(shù)值型;isreal:判斷數(shù)組元素是否是實(shí)數(shù)型;isfloat:判斷數(shù)組元素是否是浮點(diǎn)型;isinteger:判斷數(shù)組元素是否是以整型;islogical:判斷數(shù)組元素是否是邏輯型;ischar:判斷數(shù)組元素是否是字符型;isstruct:判斷數(shù)組元素是否是結(jié)構(gòu)體型;iscell:判斷數(shù)組元素是否是單元數(shù)組型;iscellstr:判斷是否是字符串單元數(shù)組型;2.3.3數(shù)組操作2023/2/4機(jī)械工業(yè)出版社Page93改變數(shù)組結(jié)構(gòu)利用變量編輯器改變數(shù)組結(jié)構(gòu)利用下標(biāo)索引擴(kuò)展數(shù)組:當(dāng)超過下標(biāo)索引取值范圍來定位數(shù)組元素,并對(duì)其賦值,就可以實(shí)現(xiàn)數(shù)組尺寸的擴(kuò)張利用cat函數(shù)擴(kuò)展數(shù)組:cat

horzcat

vertcat

利用塊操作函數(shù)擴(kuò)展數(shù)組:repmat

blkdiag

利用[]裁剪數(shù)組:對(duì)指定位置的元素賦值為空方括號(hào)[],即可完成數(shù)組元素的刪除2.3.3數(shù)組操作2023/2/4機(jī)械工業(yè)出版社Page94【例2-26】數(shù)組擴(kuò)展和裁剪示例。2.3.3數(shù)組操作A=0.44560.75470.65510.64630.27600.16260.70940.67970.1190>>A(3,4)=0.9%利用下標(biāo)索引擴(kuò)展數(shù)組A=0.44560.75470.655100.64630.27600.162600.70940.67970.11900.9000>>A(3,:)=[];A(:,4)=[]

%利用[]裁剪數(shù)組A=0.44560.75470.65510.64630.27600.16262023/2/4機(jī)械工業(yè)出版社Page952.3.3數(shù)組操作>>repmat(A,2,2)%利用repmat函數(shù)擴(kuò)展數(shù)組ans=0.44560.75470.65510.44560.75470.65510.64630.27600.16260.64630.27600.16260.44560.75470.65510.44560.75470.65510.64630.27600.16260.64630.27600.1626>>B=[13;42];>>blkdiag(A,B)%利用blkdiag函數(shù)擴(kuò)展數(shù)組ans=0.44560.75470.6551000.64630.27600.1626000001.00003.00000004.00002.00002023/2/4機(jī)械工業(yè)出版社Page96改變數(shù)組形狀——轉(zhuǎn)置轉(zhuǎn)置操作符(’):實(shí)現(xiàn)數(shù)組的共軛轉(zhuǎn)置;點(diǎn)轉(zhuǎn)置操作符(.’):實(shí)現(xiàn)數(shù)組的非共軛轉(zhuǎn)置transpose:實(shí)現(xiàn)數(shù)組的非共軛轉(zhuǎn)置,功能同點(diǎn)轉(zhuǎn)置操作符(.’);ctanspose:實(shí)現(xiàn)數(shù)組的共軛轉(zhuǎn)置,功能同轉(zhuǎn)置操作符(’)。2.3.3數(shù)組操作2023/2/4機(jī)械工業(yè)出版社Page97改變數(shù)組形狀——數(shù)組翻轉(zhuǎn)fliplr:左右翻轉(zhuǎn)數(shù)組;flipud:上下翻轉(zhuǎn)數(shù)組;flipdim:按指定方向翻轉(zhuǎn)數(shù)組,當(dāng)方向參數(shù)值為1時(shí),等同flipup,當(dāng)方向參數(shù)值為2時(shí),等同fliplr;rot90:將數(shù)組逆時(shí)針旋轉(zhuǎn)90度的整數(shù)倍。2.3.3數(shù)組操作2023/2/4機(jī)械工業(yè)出版社Page98改變數(shù)組形狀——reshape函數(shù)reshape函數(shù)的語法形式如下:B=reshape(A,a,b)A:輸入數(shù)組;a、b:調(diào)整之后的行數(shù)與列數(shù);B:調(diào)整之后的數(shù)組。2.3.3數(shù)組操作調(diào)整前后,數(shù)組元素個(gè)數(shù)不會(huì)改變。若A的行列數(shù)分別為m和n,調(diào)正后的行列數(shù)分別為a和b,則有

m*n=a*b2023/2/4機(jī)械工業(yè)出版社Page99【例2-27】改變數(shù)組形狀示例。2.3.3數(shù)組操作A=0.49840.58530.25510.89090.95970.22380.50600.95930.34040.75130.69910.5472>>B=A'%對(duì)數(shù)組進(jìn)行轉(zhuǎn)置操作B=0.49840.95970.34040.58530.22380.75130.25510.50600.69910.89090.95930.54722023/2/4機(jī)械工業(yè)出版社Page1002.3.3數(shù)組操作%對(duì)數(shù)組A進(jìn)行左右翻轉(zhuǎn)>>C=fliplr(A)C=0.89090.25510.58530.49840.95930.50600.22380.95970.54720.69910.75130.3404%將數(shù)組A的行數(shù)變?yōu)?,列數(shù)變?yōu)?>>D=reshape(A,4,3)D=0.49840.22380.69910.95970.75130.89090.34040.25510.95930.58530.50600.54722023/2/4機(jī)械工業(yè)出版社Page101數(shù)組排序sort函數(shù)的語法形式如下所示:B=sort(A)B=sort(A,dim)B=sort(...,mode)[B,IX]=sort(A,...)2.3.3數(shù)組操作dim=1對(duì)每一列排序,dim=2對(duì)每一行排序;mode=’ascend’時(shí),升序排序,mode=’descend’時(shí),降序排序;sort(A)實(shí)現(xiàn)對(duì)一維或二維數(shù)組進(jìn)行升序排序,并返回排序后的數(shù)組,當(dāng)A為二維數(shù)組時(shí),對(duì)數(shù)組的每一列進(jìn)行排序。

2023/2/4機(jī)械工業(yè)出版社Page102【例2-28】數(shù)組排序示例。2.3.3數(shù)組操作A=0.13860.84070.24350.19660.14930.25430.92930.25110.25750.81430.35000.6160>>sort(A)%對(duì)數(shù)組A按列升序排列ans=0.13860.25430.24350.19660.14930.81430.35000.25110.25750.84070.92930.6160>>sort(A,2,'descend')%對(duì)數(shù)組A按行降序排列ans=0.84070.24350.19660.13860.92930.25430.25110.14930.81430.61600.35000.25752023/2/4機(jī)械工業(yè)出版社Page103數(shù)組查找find函數(shù)的語法形式如下所示:ind=find(X)ind=find(X,k)[row,col]=find(X,...)2.3.3數(shù)組操作find(X)返回?cái)?shù)組A中非零元素的單下標(biāo)索引。find(X,k)返回?cái)?shù)組A中最多k個(gè)非零元素的單下標(biāo)索引[row,col]=find(X,...)返回?cái)?shù)組A的雙下標(biāo)索引。2023/2/4機(jī)械工業(yè)出版社Page104數(shù)組的運(yùn)算包括標(biāo)量-數(shù)組運(yùn)算和數(shù)組-數(shù)組運(yùn)算。本書的數(shù)組運(yùn)算限定為元素對(duì)元素的運(yùn)算,矩陣運(yùn)算則是遵循線性代數(shù)運(yùn)算規(guī)則的運(yùn)算,詳見2.4.3。2.3.4數(shù)組運(yùn)算2023/2/4機(jī)械工業(yè)出版社Page105數(shù)組-數(shù)組運(yùn)算數(shù)組-數(shù)組運(yùn)算要求參與運(yùn)算的兩個(gè)數(shù)組具有相同的尺寸;一個(gè)數(shù)組中的元素只與另一個(gè)數(shù)組中對(duì)應(yīng)位置的元素進(jìn)行運(yùn)算;數(shù)組-數(shù)組運(yùn)算的乘法、除法和乘方運(yùn)算為點(diǎn)運(yùn)算。2.3.4數(shù)組運(yùn)算2023/2/4機(jī)械工業(yè)出版社Page106標(biāo)量-數(shù)組運(yùn)算標(biāo)量與數(shù)組的運(yùn)算,就是將標(biāo)量作用與數(shù)組的每個(gè)元素上。常見的運(yùn)算包括加(+)、減(-)、乘(*)、除(\)和乘方等運(yùn)算。2.3.4數(shù)組運(yùn)算2023/2/4機(jī)械工業(yè)出版社Page107【例2-29】標(biāo)量-數(shù)組運(yùn)算示例。2.3.4數(shù)組運(yùn)算A=816357492>>A-2ans=6-14135270>>A*2ans=162126101481842023/2/4機(jī)械工業(yè)出版社Page108【例2-30】數(shù)組-數(shù)組運(yùn)算示例。2.3.4數(shù)組運(yùn)算A=0.26300.74820.22900.65410.45050.91330.68920.08380.1524B=0.82580.07820.96190.53830.44270.00460.99610.10670.7749>>A–Bans=-0.56280.6700-0.73290.11580.00780.9087-0.3069-0.0229-0.6225>>A.*Bans=0.21720.05850.22030.35210.19940.00420.68660.00890.1181>>A.\Bans=3.14030.10454.20090.82310.98250.00511.44531.27245.0854>>A.^2ans=0.06920.55970.05240.42780.20300.83420.47500.00700.02322023/2/4機(jī)械工業(yè)出版社Page109多維數(shù)組是指維數(shù)超過兩維的數(shù)組,它實(shí)際上是二維數(shù)組的擴(kuò)展。對(duì)于二維數(shù)組,習(xí)慣上將第一維稱為行,第二維稱為列,二維數(shù)組就是一個(gè)由行和列所確定的“面”,多維數(shù)組實(shí)際上是在多維空間中對(duì)這個(gè)“面”的擴(kuò)展。2.3.5多維數(shù)組2023/2/4機(jī)械工業(yè)出版社Page110創(chuàng)建多維數(shù)組通過指定索引將二維數(shù)組擴(kuò)展成多維數(shù)組;利用MATLAB內(nèi)聯(lián)函數(shù)創(chuàng)建多維數(shù)組:reshaperepmat

利用cat函數(shù)創(chuàng)建多維數(shù)組;通過擴(kuò)展二維數(shù)組創(chuàng)建三維數(shù)組,一般先創(chuàng)建三維數(shù)組每一頁上的二維數(shù)組,然后將它們賦值給三維數(shù)組第三維的指定位置。2.3.5多維數(shù)組2023/2/4機(jī)械工業(yè)出版社Page111【例2-31】擴(kuò)展二維數(shù)組來創(chuàng)建三維數(shù)組。2.3.5多維數(shù)組A=0.81730.08440.25990.86870.39980.8001>>A(:,:,2)=ones(2,3)%給數(shù)組A增加一頁A(:,:,1)=0.81730.08440.25990.86870.39980.8001A(:,:,2)=1111112023/2/4機(jī)械工業(yè)出版社Page112【例2-32】利用MATLAB內(nèi)聯(lián)函數(shù)創(chuàng)建多維數(shù)組示例

。2.3.5多維數(shù)組A=0.35100.40180.23990.18390.41730.90270.51320.07600.12330.24000.04970.9448%將數(shù)組A變形為一個(gè)2行3列2頁的三維數(shù)組>>B=reshape(A,2,3,2)

B(:,:,1)=0.35100.40180.23990.51320.07600.1233B(:,:,2)=0.18390.41730.90270.24000.04970.94482023/2/4機(jī)械工業(yè)出版社Page1132.3.5多維數(shù)組A=0.35100.40180.23990.18390.41730.90270.51320.07600.12330.24000.04970.9448C=111111%將數(shù)組B和C連接成一個(gè)新的多維數(shù)組D>>D=cat(3,B,C)

D(:,:,1)=0.35100.40180.23990.51320.07600.1233D(:,:,2)=0.18390.41730.90270.24000.04970.9448D(:,:,3)=1111112023/2/4機(jī)械工業(yè)出版社Page114多維數(shù)組訪問多維數(shù)組也是通過下標(biāo)索引實(shí)現(xiàn)對(duì)多維數(shù)組元素的訪問,包括多下標(biāo)索引和單下標(biāo)索引對(duì)于n維數(shù)組,多下標(biāo)索引方法通過指定n個(gè)下標(biāo)索引來訪問指定位置的元素單下標(biāo)索引方法則是通過一個(gè)下標(biāo)來定位多維數(shù)組的元素多下標(biāo)索引與單下標(biāo)索引之間也可以相互轉(zhuǎn)換2.3.5多維數(shù)組2023/2/4機(jī)械工業(yè)出版社Page115多維數(shù)組訪問MATLAB是按照行-列-頁的順序?qū)⒍嗑S數(shù)組的所有元素線性存儲(chǔ)起來;即:先存儲(chǔ)第1頁第1列第1行的元素,然后存儲(chǔ)第1頁第1列第2行的元素,存儲(chǔ)完第1列后,再存儲(chǔ)第2列,完成第1頁的存儲(chǔ)再存儲(chǔ)第2頁,直至最后一頁最后一個(gè)元素。2.3.5多維數(shù)組2023/2/4機(jī)械工業(yè)出版社Page116【例2-33】多維數(shù)組訪問示例

。2.3.5多維數(shù)組A(:,:,1)=0.49090.33770.36920.48930.90010.1112A(:,:,2)=0.78030.24170.09650.38970.40390.1320>>A(1,3,1)

ans=0.3692>>A(5)

ans=0.3692>>A(9)=0.99

%對(duì)數(shù)組中下標(biāo)索引為9的元素賦值A(chǔ)(:,:,1)=0.49

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論