matlab第3章 單元數(shù)組與結構數(shù)組ppt課件_第1頁
matlab第3章 單元數(shù)組與結構數(shù)組ppt課件_第2頁
matlab第3章 單元數(shù)組與結構數(shù)組ppt課件_第3頁
matlab第3章 單元數(shù)組與結構數(shù)組ppt課件_第4頁
matlab第3章 單元數(shù)組與結構數(shù)組ppt課件_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第3章 單元數(shù)組與結構數(shù)組,3.1 字符串數(shù)組,3.2 單元數(shù)組,3.3 結構數(shù)組,3.4 綜合實例,3.1 字符串數(shù)組,3.1.1 串數(shù)組的生成,1直接輸入法 直接用單引號輸入,例如: Book=MATLAB 7.14 (R2012a)基礎 顯示的結果為: Book = MATLAB 7.14 (R2012a)基礎,若在單引號外加大括號也可以顯示字符串,例如: S=數(shù)組計算 S = 數(shù)組計算 從結果來看,顯示的內(nèi)容有單引號標示,而單引號法顯示的卻只是文本。,2利用命令disp法 格式 disp(S) %S是字符串,顯示出S的文本 例如: disp(Book) 顯示的結果為: MATLAB 7

2、.14 (R2012a)基礎,3利用命令char法 格式 char(S) %S是字符串,顯示出S的文本 例如: char(MATLAB工具箱) ans = MATLAB工具箱,首頁,4利用命令input法 格式 input(out,in) %顯示出字符串out的文本并等待終端的輸入,in可缺省 如果變量in是s,則輸入的內(nèi)容以字符串的形式進行保存。,例如,在命令窗口中輸入: x=input(Give a number x:) 顯示的結果為: Give a number x: 然后在“x::”的后面輸入一個數(shù),不妨為6,回車即得: x = 6 此時數(shù)值6以變量x的形式顯示在Workspace工作

3、空間內(nèi)。,若執(zhí)行如下命令: x=input(Give a number x:,s) Give a number x:6 x = 6 此時數(shù)字6以字符串的形式保存在Workspace工作空間內(nèi)。,5在字符串中用兩個單引號來表示一個單引號 Its a reference book. ans = Its a reference book.,3.1.2 串數(shù)組的訪問和大小,1串數(shù)組的訪問 字符串的存儲是按其中字符逐個順序單一存放的,且存放的是字符的內(nèi)部代碼ASCII碼。當在屏幕上顯示字符變量的值時,顯示出來的是文本,而不是ASCII數(shù)字。由于字符串是以向量的形式來存儲的,所以可以通過它的下標對字符串中

4、的任何一個元素進行訪問。 例如,對上面定義的字符串Book,輸入命令: Book(14:19) ans = R2012a,3字符串的查找 在字符串中尋找某個字符串可用函數(shù)findstr來實現(xiàn)。 格式 findstr(S1,S2) %S1、S2都為字符串,表示在較長的字符串中 查找較短的字符串出現(xiàn)的次數(shù),并返回其位置,2字符串的長度 一個字符串的長度可用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 注:字符串和要查找的字符串的位置可以互換,結果相同。因此,無論S1、S2哪個為長字符串,位置在前在后都沒有關系。,3.1.3 多行串數(shù)組的創(chuàng)建,首頁,1多行串數(shù)組的直接輸入 字符串數(shù)組可以是多行多列的數(shù)組,但必須保證每一行都有相同的列數(shù)。若字符串長度不一樣,需要用空格填充,保證所有行的長度都相同。例如: S1=This string array;has two rows. %使用矩陣產(chǎn)生法,第二行后面需加4個空格 S1 = This string array has two rows.,2利用串操作函數(shù)創(chuàng)建多行串數(shù)組 利用函數(shù)char、strvca

6、t 創(chuàng)建多行串數(shù)組,每行的字符串長度可以不同。例如: S1=char(This string array,has two rows.) S1 = This string array has two rows. S2=strvcat(創(chuàng)建,多行,字符串數(shù)組) S2 = 創(chuàng)建 多行 字符串數(shù)組,1字符串轉換成矩陣 將字符串轉換成矩陣的函數(shù)為str2mat。例如: S=數(shù)值,字符串,2012年6月 M=str2mat(S) S = 數(shù)值 字符串 2012年6月 M = 數(shù)值 字符串 2012年6月,3.1.4 字符串數(shù)組的轉換,2字符串與數(shù)值的轉換 利用str2num和num2 str實現(xiàn)字符串與數(shù)

7、值的相互轉換。例如: X=1:9; S=num2str(X) S = 1 2 3 4 5 6 7 8 9,注:雖然S的顯示結果與X看上去一樣,但其含義不同。X是數(shù)組,S是字符串。同樣字符串可以轉化為數(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對細胞元素直接賦值創(chuàng)建 【例3-1】創(chuàng)建一個學生的各科成績單元數(shù)組。 S1,1=語文; S1,2=數(shù)學; S1,3=外語; S1,4=物理; S1,5=化學; 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)建一個大小合適的空矩陣 格式 cell(m,n) %創(chuàng)建一個mn的空細胞矩陣,矩陣所有行必須要有相同的細胞數(shù),首頁,運行結果如下: S = 語文 數(shù)學 外語 物理 化學 生物 102 125 130 86 82 80,注:該方法首先使用cell函數(shù)定義一個單元數(shù)組,此時,由于

9、數(shù)組的各個元素還沒有定義,因此,所顯示的單元數(shù)組中元素都用空陣 來表示。然后,依次輸入單元數(shù)據(jù)中各個元素的值,可以發(fā)現(xiàn),每輸入一個值,用相應的值代替空陣。,3.2.2 單元數(shù)組的顯示,首頁,1celldisp函數(shù) 格式 celldisp(cell) %逐個顯示cell的每個元素的值 例如,對【例3-2】中的數(shù)組B,執(zhí)行命令: celldisp(B) 顯示的結果如下: 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的結構形式,例如,對【例3-2】中的數(shù)組B,繼續(xù)執(zhí)行命令: cellplot(B) 顯示結果如圖3-1所示。,首頁,圖3-1 單元型變量的結構,實際上,B1相當于B1,1;B2相當于B2,1;B3相當于B1,2,等等。注意使用大括號與小括號的不同,大括號是用于標示單元而不考慮這些單元的值,而小括號用于尋址單元的值。,3.2.3 單元數(shù)組的內(nèi)容獲取,為了獲取單元數(shù)組中一個單元的值,只需使用大括號。如對【例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ù)組在進行統(tǒng)計分析時,不能直接使用計算統(tǒng)計量的函數(shù),而必須將單元數(shù)組中單元的數(shù)值轉化成數(shù)值向量,隨后進行數(shù)值計算。,3.2.4 單元數(shù)組的數(shù)據(jù)處理,首頁,例如,對【例3-1】中形成的數(shù)組,計算這個學生考試的總分。 由于數(shù)組C的顯示結果為: C = 語文 數(shù)學 外語 物理 化學 生物 102 125 130 86 82 80,運行結果如下: X = 102 125 130 86 82 80 ans = 605,若直接對C的第2行求和,命令窗口顯示出錯。這時需將單元數(shù)組轉化成數(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 結構數(shù)組,首頁,1直接輸入法 在給結構數(shù)組中元素直接賦值的同時定義該元素的名稱,并使用“.”將結構變量名與元素名連接。,格式 struct_name(record#).field_name=data,%創(chuàng)建將數(shù)據(jù)data直接賦值給變量名,struct_name(record#)和元素名,field_name的結構數(shù)組,說明 創(chuàng)建11的結構數(shù)組時可省略記錄號(record#)項,【例3-3】 建立學生檔案的小型數(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,運行結果如下,student = test: 90 86 82 88 92 75 80 name: zhaohua sex: F age: 20 num: 20110501 add: qd uinversity tel:我們可以繼續(xù)添加其他學生數(shù)

14、據(jù)的結構變量,只需要加記錄號即可: 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ù)添加其他學生數(shù)據(jù)的結構變量,只需要加記錄號即可: 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,此時輸入student,將只得到該結構的成員變量名而不顯示內(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默認為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ù)生成結構數(shù)組,格式 S=struct(field1,V1, field2,V2,) % field為各成員變量

17、名,V為對應的各成員 變量的內(nèi)容,返回結構數(shù)組S,【例3-4】用struct函數(shù)創(chuàng)建結構數(shù)組變量。 S =struct(city,beijing,shanghai,renkou,1500,1300) 運行結果如下: S = 1x2 struct array with fields: city renkou S.city ans = beijing ans = shanghai S.renkou ans = 1500 1300,3.3.2 結構數(shù)組的操作,1在結構數(shù)組中添加項 如果用戶想在一個結構數(shù)組中添加其它項,直接按照生成格式輸入即可。,【例3-5】 在學生數(shù)據(jù)庫【例3-3】中的studen

18、t,若要添加元素項height和weight,只需輸入: student(1).height=1.62 student(1).weight=54; student(2).height=1.82; student(2).weight=75; student %顯示student的結構,首頁,運行結果如下:,student = 1x2 struct array with fields: test name sex age num add tel height weight,首頁,從上面的輸出結果可知,在student中新添加了height和weight兩項紀錄,進而可顯示:, 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在結構數(shù)組

20、中刪除項 格式 S=rmfield(S,fields) %將結構數(shù)組S中的fields項刪去,仍用數(shù)組名S表示 說明 當fields是字符串或單元數(shù)組變量時,將一次性刪除多項。 【例3-6】 對【例3-5】中結果,輸入語句:,首頁,首頁, student=rmfield(student,weight) 運行結果如下: 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在結構數(shù)組中調(diào)用元素項,結構數(shù)組中的任何信息,可以通過“結構體名稱+元素項名稱”的格式取出。 例如,對【例3-6】中結果,輸入語句: 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,也可直接取出所有同學的姓名和分數(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結構數(shù)組與單元數(shù)組的轉換 格式 C=struct2cell(S) %

23、將結構數(shù)組S轉化為單元數(shù)組C S=cell2struct(C) %將單元數(shù)組C轉化為結構數(shù)組S,例如,在【例3-4】中創(chuàng)建的結構數(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ù)組具有類似數(shù)據(jù)庫功能,因此本章實例給出一個建立學生班級檔案數(shù)組。由于對字符串也可以實施查找和計算長度,所以我們給出一個計算轉移概率的方法,進而可

24、做一些市場預測。,3.4.1 建立學生班級檔案數(shù)組,【例3-7】 現(xiàn)給出2011級機械班第一學期考試課程的任課教師和學生信息,如表3-1和表3-2所示。,表3-1 2011級機械班學生信息,表3-2 2011級機械班任課教師信息,試求:(1)建立任課教師和學生的結構數(shù)組teacher和student; (2)以建立的結構數(shù)組teacher和student為基礎,再創(chuàng)建班級的細胞數(shù)組,并顯示教師和學生的信息。,(1)創(chuàng)建學生結構數(shù)組 clear student(1).number=20110103001; student(1).name=趙凱; student(1).course=高等數(shù)學,大學

25、英語,計算機基礎,機械制圖; student(1).score=86 80 92 79; student(2).number=20110103002; student(2).name=王菲; student(2).course=高等數(shù)學,大學英語,計算機基礎,機械制圖; student(2).score=78 85 90 82; student(3).number=20110103003; student(3).name=劉洋; student(3).course=高等數(shù)學,大學英語,計算機基礎,機械制圖; student(3).score=88 80 95 90;,(2)創(chuàng)建教師結構數(shù)組 t

26、eacher(1).name=孫天宇; teacher(1).course=高等數(shù)學; teacher(2).name=劉梅芳; teacher(2).course=大學英語; teacher(3).name=王海濤; teacher(3).course=計算機基礎; teacher(4).name=楊一凡; teacher(4).course=機械制圖;,(3)創(chuàng)建班級單元數(shù)組 class=cell(1,2); class1,1=student; class1,2=teacher;,(4)顯示單元數(shù)組結構 celldisp(class) 運行結果如下: class1 = 1x3 struct

27、 array with fields: number name course score class2 = 1x4 struct array with fields: name cours,(5) 查詢第一個學生信息 class1(1).name %查詢第一個學生的姓名 class1(1).course %查詢第一個學生學習課程 class1(1).score %查詢第一個學生成績 %查詢開課教師姓名,運行結果如下: ans = 趙凱 ans = 高等數(shù)學 大學英語 計算機基礎 機械制圖 ans = 86 80 92 79 ans = 孫天宇 ans = 劉梅芳 ans = 王濤 ans = 楊一凡,3.4.2 股票價格走勢預測,【例3-8】某人打算購買股票,選定某一只股票進行觀察其價格變動情況,并進行記錄。若當日收盤價格高于上一日的收盤價格,記為1,表示上升;否則

溫馨提示

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

評論

0/150

提交評論