版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第3章 單元數(shù)組與結(jié)構(gòu)數(shù)組,3.1 字符串?dāng)?shù)組,3.2 單元數(shù)組,3.3 結(jié)構(gòu)數(shù)組,3.4 綜合實(shí)例,3.1 字符串?dāng)?shù)組,3.1.1 串?dāng)?shù)組的生成,1直接輸入法 直接用單引號輸入,例如: Book=MATLAB 7.14 (R2012a)基礎(chǔ) 顯示的結(jié)果為: Book = MATLAB 7.14 (R2012a)基礎(chǔ),若在單引號外加大括號也可以顯示字符串,例如: S=數(shù)組計(jì)算 S = 數(shù)組計(jì)算 從結(jié)果來看,顯示的內(nèi)容有單引號標(biāo)示,而單引號法顯示的卻只是文本。,2利用命令disp法 格式 disp(S) %S是字符串,顯示出S的文本 例如: disp(Book) 顯示的結(jié)果為: MATLAB 7
2、.14 (R2012a)基礎(chǔ),3利用命令char法 格式 char(S) %S是字符串,顯示出S的文本 例如: char(MATLAB工具箱) ans = MATLAB工具箱,首頁,4利用命令input法 格式 input(out,in) %顯示出字符串out的文本并等待終端的輸入,in可缺省 如果變量in是s,則輸入的內(nèi)容以字符串的形式進(jìn)行保存。,例如,在命令窗口中輸入: x=input(Give a number x:) 顯示的結(jié)果為: Give a number x: 然后在“x::”的后面輸入一個(gè)數(shù),不妨為6,回車即得: x = 6 此時(shí)數(shù)值6以變量x的形式顯示在Workspace工作
3、空間內(nèi)。,若執(zhí)行如下命令: x=input(Give a number x:,s) Give a number x:6 x = 6 此時(shí)數(shù)字6以字符串的形式保存在Workspace工作空間內(nèi)。,5在字符串中用兩個(gè)單引號來表示一個(gè)單引號 Its a reference book. ans = Its a reference book.,3.1.2 串?dāng)?shù)組的訪問和大小,1串?dāng)?shù)組的訪問 字符串的存儲是按其中字符逐個(gè)順序單一存放的,且存放的是字符的內(nèi)部代碼ASCII碼。當(dāng)在屏幕上顯示字符變量的值時(shí),顯示出來的是文本,而不是ASCII數(shù)字。由于字符串是以向量的形式來存儲的,所以可以通過它的下標(biāo)對字符串中
4、的任何一個(gè)元素進(jìn)行訪問。 例如,對上面定義的字符串Book,輸入命令: Book(14:19) ans = R2012a,3字符串的查找 在字符串中尋找某個(gè)字符串可用函數(shù)findstr來實(shí)現(xiàn)。 格式 findstr(S1,S2) %S1、S2都為字符串,表示在較長的字符串中 查找較短的字符串出現(xiàn)的次數(shù),并返回其位置,2字符串的長度 一個(gè)字符串的長度可用length和size函數(shù)來確定大小。例如: length(Book) ans = 22 size(Book) ans = 1 22,例如,在上面定義的字符串Book中查找A所在的位置: findstr(Book,A) ans = 2 5 fin
5、dstr(A,Book) ans = 2 5 注:字符串和要查找的字符串的位置可以互換,結(jié)果相同。因此,無論S1、S2哪個(gè)為長字符串,位置在前在后都沒有關(guān)系。,3.1.3 多行串?dāng)?shù)組的創(chuàng)建,首頁,1多行串?dāng)?shù)組的直接輸入 字符串?dāng)?shù)組可以是多行多列的數(shù)組,但必須保證每一行都有相同的列數(shù)。若字符串長度不一樣,需要用空格填充,保證所有行的長度都相同。例如: S1=This string array;has two rows. %使用矩陣產(chǎn)生法,第二行后面需加4個(gè)空格 S1 = This string array has two rows.,2利用串操作函數(shù)創(chuàng)建多行串?dāng)?shù)組 利用函數(shù)char、strvca
6、t 創(chuàng)建多行串?dāng)?shù)組,每行的字符串長度可以不同。例如: S1=char(This string array,has two rows.) S1 = This string array has two rows. S2=strvcat(創(chuàng)建,多行,字符串?dāng)?shù)組) S2 = 創(chuàng)建 多行 字符串?dāng)?shù)組,1字符串轉(zhuǎn)換成矩陣 將字符串轉(zhuǎn)換成矩陣的函數(shù)為str2mat。例如: S=數(shù)值,字符串,2012年6月 M=str2mat(S) S = 數(shù)值 字符串 2012年6月 M = 數(shù)值 字符串 2012年6月,3.1.4 字符串?dāng)?shù)組的轉(zhuǎn)換,2字符串與數(shù)值的轉(zhuǎn)換 利用str2num和num2 str實(shí)現(xiàn)字符串與數(shù)
7、值的相互轉(zhuǎn)換。例如: X=1:9; S=num2str(X) S = 1 2 3 4 5 6 7 8 9,注:雖然S的顯示結(jié)果與X看上去一樣,但其含義不同。X是數(shù)組,S是字符串。同樣字符串可以轉(zhuǎn)化為數(shù)組,例如:, S=11 22;33 44 S = 11 22 33 44 X=str2num(S) X = 11 22 33 44,3.2 單元數(shù)組,首頁,3.2.1 單元數(shù)組的創(chuàng)建,1使用大括號 直接創(chuàng)建 例如: A=Command ,Workspace;Current Directory,History A = Command Workspace Current Directory Histo
8、ry,2對細(xì)胞元素直接賦值創(chuàng)建 【例3-1】創(chuàng)建一個(gè)學(xué)生的各科成績單元數(shù)組。 S1,1=語文; S1,2=數(shù)學(xué); S1,3=外語; S1,4=物理; S1,5=化學(xué); S1,6=生物; S2,1=102; S2,2=125; S2,3=130; S2,4=86; S2,5=82; S2,6=80; S,3利用函數(shù)cell創(chuàng)建一個(gè)大小合適的空矩陣 格式 cell(m,n) %創(chuàng)建一個(gè)mn的空細(xì)胞矩陣,矩陣所有行必須要有相同的細(xì)胞數(shù),首頁,運(yùn)行結(jié)果如下: S = 語文 數(shù)學(xué) 外語 物理 化學(xué) 生物 102 125 130 86 82 80,注:該方法首先使用cell函數(shù)定義一個(gè)單元數(shù)組,此時(shí),由于
9、數(shù)組的各個(gè)元素還沒有定義,因此,所顯示的單元數(shù)組中元素都用空陣 來表示。然后,依次輸入單元數(shù)據(jù)中各個(gè)元素的值,可以發(fā)現(xiàn),每輸入一個(gè)值,用相應(yīng)的值代替空陣。,3.2.2 單元數(shù)組的顯示,首頁,1celldisp函數(shù) 格式 celldisp(cell) %逐個(gè)顯示cell的每個(gè)元素的值 例如,對【例3-2】中的數(shù)組B,執(zhí)行命令: celldisp(B) 顯示的結(jié)果如下: B1,1 = matrix B2,1 = 1234 5678 B1,2 = laboratory B2,2 = Tollboxs B1,3 = MATLAB B2,3 = 7.14 2012(a),2cellplot函數(shù) 格式 c
10、ellplot(B) %用彩色的圖形來顯示單元型變量B的結(jié)構(gòu)形式,例如,對【例3-2】中的數(shù)組B,繼續(xù)執(zhí)行命令: cellplot(B) 顯示結(jié)果如圖3-1所示。,首頁,圖3-1 單元型變量的結(jié)構(gòu),實(shí)際上,B1相當(dāng)于B1,1;B2相當(dāng)于B2,1;B3相當(dāng)于B1,2,等等。注意使用大括號與小括號的不同,大括號是用于標(biāo)示單元而不考慮這些單元的值,而小括號用于尋址單元的值。,3.2.3 單元數(shù)組的內(nèi)容獲取,為了獲取單元數(shù)組中一個(gè)單元的值,只需使用大括號。如對【例3-2】中的數(shù)組B,執(zhí)行命令: B1 ans = matrix B2 ans = 1234 5678 B3 ans = laboratory
11、,例如: B(1) ans = matrix B(2) ans = 2x4 char,首頁,MATLAB的單元數(shù)組在進(jìn)行統(tǒng)計(jì)分析時(shí),不能直接使用計(jì)算統(tǒng)計(jì)量的函數(shù),而必須將單元數(shù)組中單元的數(shù)值轉(zhuǎn)化成數(shù)值向量,隨后進(jìn)行數(shù)值計(jì)算。,3.2.4 單元數(shù)組的數(shù)據(jù)處理,首頁,例如,對【例3-1】中形成的數(shù)組,計(jì)算這個(gè)學(xué)生考試的總分。 由于數(shù)組C的顯示結(jié)果為: C = 語文 數(shù)學(xué) 外語 物理 化學(xué) 生物 102 125 130 86 82 80,運(yùn)行結(jié)果如下: X = 102 125 130 86 82 80 ans = 605,若直接對C的第2行求和,命令窗口顯示出錯(cuò)。這時(shí)需將單元數(shù)組轉(zhuǎn)化成數(shù)值數(shù)組,具體
12、程序如下: for i=1:6 X(i)=C2,i; %將單元數(shù)組C的第二行第i列的內(nèi)容賦于數(shù)值數(shù)組X end X, sum(X) %顯示數(shù)組X及考試總分,3.3 結(jié)構(gòu)數(shù)組,首頁,1直接輸入法 在給結(jié)構(gòu)數(shù)組中元素直接賦值的同時(shí)定義該元素的名稱,并使用“.”將結(jié)構(gòu)變量名與元素名連接。,格式 struct_name(record#).field_name=data,%創(chuàng)建將數(shù)據(jù)data直接賦值給變量名,struct_name(record#)和元素名,field_name的結(jié)構(gòu)數(shù)組,說明 創(chuàng)建11的結(jié)構(gòu)數(shù)組時(shí)可省略記錄號(record#)項(xiàng),【例3-3】 建立學(xué)生檔案的小型數(shù)據(jù)庫。 student
13、.test=90 86 82 88 92 75 80; =zhaohua; student.sex=F; student.age=20;, student.num=20110501; student.add=qd uinversity; student.tel student,運(yùn)行結(jié)果如下,student = test: 90 86 82 88 92 75 80 name: zhaohua sex: F age: 20 num: 20110501 add: qd uinversity tel:我們可以繼續(xù)添加其他學(xué)生數(shù)
14、據(jù)的結(jié)構(gòu)變量,只需要加記錄號即可: student(2).test=92 87 85 81 90 78 82; student(2).name=yangping; student(2).sex=M; student(2).age=22; student(2).num=20110502; student(2).add=qd uinversity; student(2).tel,我們可以繼續(xù)添加其他學(xué)生數(shù)據(jù)的結(jié)構(gòu)變量,只需要加記錄號即可: student(2).test=92 87 85 81 90 78 82; student(2).name=yangping; stu
15、dent(2).sex=M; student(2).age=22; student(2).num=20110502; student(2).add=qd uinversity; student(2).tel,此時(shí)輸入student,將只得到該結(jié)構(gòu)的成員變量名而不顯示內(nèi)容: student student = 1x2 struct array with fields: test name sex age num add tel,可以繼續(xù)在命令窗口中查詢student的具體內(nèi)容: student(1) %系統(tǒng)將開始的student默認(rèn)為student(1) ans = t
16、est: 90 86 82 88 92 75 80 name: zhaohua sex: F; age: 20; num: 20110501 add: qd uinversity tel: student(2) ans = test: 92 87 85 81 90 78 82 name: yangping sex: M; age: 22; num: 20110502 add: qd uinversity tel:2使用struct函數(shù)生成結(jié)構(gòu)數(shù)組,格式 S=struct(field1,V1, field2,V2,) % field為各成員變量
17、名,V為對應(yīng)的各成員 變量的內(nèi)容,返回結(jié)構(gòu)數(shù)組S,【例3-4】用struct函數(shù)創(chuàng)建結(jié)構(gòu)數(shù)組變量。 S =struct(city,beijing,shanghai,renkou,1500,1300) 運(yùn)行結(jié)果如下: S = 1x2 struct array with fields: city renkou S.city ans = beijing ans = shanghai S.renkou ans = 1500 1300,3.3.2 結(jié)構(gòu)數(shù)組的操作,1在結(jié)構(gòu)數(shù)組中添加項(xiàng) 如果用戶想在一個(gè)結(jié)構(gòu)數(shù)組中添加其它項(xiàng),直接按照生成格式輸入即可。,【例3-5】 在學(xué)生數(shù)據(jù)庫【例3-3】中的studen
18、t,若要添加元素項(xiàng)height和weight,只需輸入: student(1).height=1.62 student(1).weight=54; student(2).height=1.82; student(2).weight=75; student %顯示student的結(jié)構(gòu),首頁,運(yùn)行結(jié)果如下:,student = 1x2 struct array with fields: test name sex age num add tel height weight,首頁,從上面的輸出結(jié)果可知,在student中新添加了height和weight兩項(xiàng)紀(jì)錄,進(jìn)而可顯示:, student(1)
19、 ans = test: 90 86 82 88 92 75 80 name: zhaohua sex: F; age: 20; num: 20110501 add: qd uinversity tel:height: 1.6200 weight: 54, student(2) ans = test: 92 87 85 81 90 78 82 name: yangping sex: M; age: 22; num: 20110502 add: qd uinversity tel:height: 1.8200 weight: 75,2在結(jié)構(gòu)數(shù)組
20、中刪除項(xiàng) 格式 S=rmfield(S,fields) %將結(jié)構(gòu)數(shù)組S中的fields項(xiàng)刪去,仍用數(shù)組名S表示 說明 當(dāng)fields是字符串或單元數(shù)組變量時(shí),將一次性刪除多項(xiàng)。 【例3-6】 對【例3-5】中結(jié)果,輸入語句:,首頁,首頁, student=rmfield(student,weight) 運(yùn)行結(jié)果如下: student = 1x2 struct array with fields: test name sex age num add tel height, student(1) ans = test: 90 86 82 88 92 75 80 name: zhaohua sex:
21、 F age: 20 num: 20110501 add: qd uinversity tel:height: 1.6200, student(2) ans = test: 92 87 85 81 90 78 82 name: yangping sex: M; age: 22; num: 20110502 add: qd uinversity tel:height: 1.8200,3在結(jié)構(gòu)數(shù)組中調(diào)用元素項(xiàng),結(jié)構(gòu)數(shù)組中的任何信息,可以通過“結(jié)構(gòu)體名稱+元素項(xiàng)名稱”的格式取出。 例如,對【例3-6】中結(jié)果,輸入語句: student(1).tes
22、t ans = 90 86 82 88 92 75 80 student(1).test (4) ans = 88 student(2).test ans = 92 87 85 81 90 78 82 student(2).test(4) ans = 8,也可直接取出所有同學(xué)的姓名和分?jǐn)?shù),如執(zhí)行命令: ans = zhaohua ans = yangping student.test ans = 90 86 82 88 92 75 80 ans = 92 87 85 81 90 78 82,3.3.3結(jié)構(gòu)數(shù)組與單元數(shù)組的轉(zhuǎn)換 格式 C=struct2cell(S) %
23、將結(jié)構(gòu)數(shù)組S轉(zhuǎn)化為單元數(shù)組C S=cell2struct(C) %將單元數(shù)組C轉(zhuǎn)化為結(jié)構(gòu)數(shù)組S,例如,在【例3-4】中創(chuàng)建的結(jié)構(gòu)數(shù)組S,執(zhí)行命令: C=struct2cell(S) C(:,:,1) = beijing 1x2 double C(:,:,2) = shanghai 1x2 double C=C(:,1),C(:,2) C = beijing shanghai 1x2 double 1x2 double,3.4 綜合實(shí)例,單元數(shù)組和結(jié)構(gòu)數(shù)組具有類似數(shù)據(jù)庫功能,因此本章實(shí)例給出一個(gè)建立學(xué)生班級檔案數(shù)組。由于對字符串也可以實(shí)施查找和計(jì)算長度,所以我們給出一個(gè)計(jì)算轉(zhuǎn)移概率的方法,進(jìn)而可
24、做一些市場預(yù)測。,3.4.1 建立學(xué)生班級檔案數(shù)組,【例3-7】 現(xiàn)給出2011級機(jī)械班第一學(xué)期考試課程的任課教師和學(xué)生信息,如表3-1和表3-2所示。,表3-1 2011級機(jī)械班學(xué)生信息,表3-2 2011級機(jī)械班任課教師信息,試求:(1)建立任課教師和學(xué)生的結(jié)構(gòu)數(shù)組teacher和student; (2)以建立的結(jié)構(gòu)數(shù)組teacher和student為基礎(chǔ),再創(chuàng)建班級的細(xì)胞數(shù)組,并顯示教師和學(xué)生的信息。,(1)創(chuàng)建學(xué)生結(jié)構(gòu)數(shù)組 clear student(1).number=20110103001; student(1).name=趙凱; student(1).course=高等數(shù)學(xué),大學(xué)
25、英語,計(jì)算機(jī)基礎(chǔ),機(jī)械制圖; student(1).score=86 80 92 79; student(2).number=20110103002; student(2).name=王菲; student(2).course=高等數(shù)學(xué),大學(xué)英語,計(jì)算機(jī)基礎(chǔ),機(jī)械制圖; student(2).score=78 85 90 82; student(3).number=20110103003; student(3).name=劉洋; student(3).course=高等數(shù)學(xué),大學(xué)英語,計(jì)算機(jī)基礎(chǔ),機(jī)械制圖; student(3).score=88 80 95 90;,(2)創(chuàng)建教師結(jié)構(gòu)數(shù)組 t
26、eacher(1).name=孫天宇; teacher(1).course=高等數(shù)學(xué); teacher(2).name=劉梅芳; teacher(2).course=大學(xué)英語; teacher(3).name=王海濤; teacher(3).course=計(jì)算機(jī)基礎(chǔ); teacher(4).name=楊一凡; teacher(4).course=機(jī)械制圖;,(3)創(chuàng)建班級單元數(shù)組 class=cell(1,2); class1,1=student; class1,2=teacher;,(4)顯示單元數(shù)組結(jié)構(gòu) celldisp(class) 運(yùn)行結(jié)果如下: class1 = 1x3 struct
27、 array with fields: number name course score class2 = 1x4 struct array with fields: name cours,(5) 查詢第一個(gè)學(xué)生信息 class1(1).name %查詢第一個(gè)學(xué)生的姓名 class1(1).course %查詢第一個(gè)學(xué)生學(xué)習(xí)課程 class1(1).score %查詢第一個(gè)學(xué)生成績 %查詢開課教師姓名,運(yùn)行結(jié)果如下: ans = 趙凱 ans = 高等數(shù)學(xué) 大學(xué)英語 計(jì)算機(jī)基礎(chǔ) 機(jī)械制圖 ans = 86 80 92 79 ans = 孫天宇 ans = 劉梅芳 ans = 王濤 ans = 楊一凡,3.4.2 股票價(jià)格走勢預(yù)測,【例3-8】某人打算購買股票,選定某一只股票進(jìn)行觀察其價(jià)格變動(dòng)情況,并進(jìn)行記錄。若當(dāng)日收盤價(jià)格高于上一日的收盤價(jià)格,記為1,表示上升;否則
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省蘇州市2022-2023學(xué)年高二上學(xué)期學(xué)業(yè)質(zhì)量陽光指標(biāo)調(diào)研生物試題(原卷版)
- 河北化工醫(yī)藥職業(yè)技術(shù)學(xué)院《陳設(shè)設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025板材展會(huì)參展服務(wù)合同集錦3篇
- 家教行業(yè)趨勢下的新技能與機(jī)遇探討
- 2024離婚協(xié)議書:房產(chǎn)過戶與贍養(yǎng)費(fèi)支付
- 學(xué)校體育設(shè)施的完善與利用
- 2024年食品包裝設(shè)計(jì)委托協(xié)議書3篇
- 2024汽車貸款發(fā)放標(biāo)準(zhǔn)合同版B版
- 紡織行業(yè)員工績效考核總結(jié)
- 二零二五年度保安人員培訓(xùn)與勞動(dòng)合同范本3篇
- 2025寒假散學(xué)典禮(休業(yè)式)上校長精彩講話:以董宇輝的創(chuàng)新、羅振宇的堅(jiān)持、馬龍的熱愛啟迪未來
- 安徽省合肥市包河區(qū)2023-2024學(xué)年九年級上學(xué)期期末化學(xué)試題
- 售樓部保安管理培訓(xùn)
- 2024年高壓電工證理論考試題庫(含答案)
- 2023-2024學(xué)年仁愛版七上期末考試英語(試題)
- 2024年醫(yī)院培訓(xùn)計(jì)劃
- 2023年湖南出版中南傳媒招聘筆試真題
- 呼吸內(nèi)科臨床診療指南及操作規(guī)范
- 學(xué)生管理教育課件
- 世界職業(yè)院校技能大賽高職組“關(guān)務(wù)實(shí)務(wù)組”賽項(xiàng)參考試題及答案
- 藝術(shù)哲學(xué):美是如何誕生的學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論