第三章 字符串?dāng)?shù)組、元胞數(shù)組和構(gòu)架數(shù)組_第1頁(yè)
第三章 字符串?dāng)?shù)組、元胞數(shù)組和構(gòu)架數(shù)組_第2頁(yè)
第三章 字符串?dāng)?shù)組、元胞數(shù)組和構(gòu)架數(shù)組_第3頁(yè)
第三章 字符串?dāng)?shù)組、元胞數(shù)組和構(gòu)架數(shù)組_第4頁(yè)
第三章 字符串?dāng)?shù)組、元胞數(shù)組和構(gòu)架數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1第三章 字符串?dāng)?shù)組、元胞數(shù)組和構(gòu)架數(shù)組2 本章涉及MATLAB中另三個(gè)重要的基本數(shù)據(jù)類(lèi)型。這章內(nèi)容對(duì)理解MATLAB自身的面向?qū)ο筇卣骱蛷?fù)雜指令的正確使用十分重要。 33.1 字符串?dāng)?shù)組(1) 創(chuàng)建方式的比較 字符串與數(shù)值是兩種不同的數(shù)據(jù)類(lèi)型,故它們的創(chuàng)建方式也就不同: ()數(shù)值變量是通過(guò)指令窗口中的數(shù)字賦值創(chuàng)建的; ()字符變量是在指令窗中,先把待建的字符放在“單引號(hào)對(duì)”中,再按Enter鍵。 注:?jiǎn)我?hào)必須在英文狀態(tài)下輸入4(2)基本規(guī)則:所有字符串都用單引號(hào)括起來(lái);字符串中的每一個(gè)字符都是該字符串變量中的一個(gè)元素;字符串中的字符以ASC碼形式存儲(chǔ),因而區(qū)分大小寫(xiě)。53.1.1 字符串入

2、門(mén) String1=b; String2=This is an example! % 英文字母、空格、數(shù)字、標(biāo)點(diǎn)、中文字符 String3=例子char array; % 都是占一個(gè)元素位,兩個(gè)字節(jié)(數(shù)值標(biāo)量需8個(gè)字節(jié)) s1=class(String1)s1 = char s2=size(String2)s2 = 1 19 whos Name Size Bytes Class String1 1x1 2 char array String2 1x19 38 char array String3 1x14 28 char array s1 1x4 8 char array s2 1x2 16

3、double arrayGrand total is 40 elements using 92 bytes61)創(chuàng)建串?dāng)?shù)組:“單引號(hào)對(duì)”必須在英文狀態(tài)下輸入。eg: a=This is an example. a = This is an example. 2)串?dāng)?shù)組的大?。簊ize指令獲得串?dāng)?shù)組的大小。串中的每一個(gè)字符,包括中英文字符、空格、標(biāo)點(diǎn)都算一個(gè)元素。eg: size(a) ans = 1 19 3)串?dāng)?shù)組的元素標(biāo)識(shí):自左向右用數(shù)字1、2、3、4標(biāo)識(shí)。eg: a14=a(1:4) ra=a(end:-1:1) a14 = This ra = .elpmaxe na si sihT 3

4、.1.2 字符串?dāng)?shù)組的屬性和標(biāo)識(shí)74) ASCII碼顯示:abs和double指令可以顯示串?dāng)?shù)組對(duì)應(yīng)的ASCII碼數(shù)值數(shù)組。char指令則可以把ASCII碼數(shù)值數(shù)組轉(zhuǎn)換成串?dāng)?shù)組。eg: ascii_a=double(a) % 產(chǎn)生ASCII碼 ascii_a = Columns 1 through 12 84 104 105 115 32 105 115 32 97 110 32 101 Columns 13 through 19 120 97 109 112 108 101 46 char(ascii_a) ans = This is an example. 5) ASCII碼數(shù)組的操作:可

5、以對(duì)ASCII碼數(shù)組進(jìn)行數(shù)值數(shù)組的各種運(yùn)算。eg: w=find(a=a&a C = char( 這是, 元胞數(shù)組 ); %兩行的字符串?dāng)?shù)組R = reshape( 1:9,3,3 ); % 3*3 的數(shù)值數(shù)組S = sym( sin(-3*t)*exp(-t) ); %符號(hào)表達(dá)式A( 1,1 ) = C ; %對(duì)元胞數(shù)組 A 進(jìn)行賦值 (外標(biāo)識(shí)元胞元素賦值法)A 2,2 = R; % 注意 和 () 的區(qū)別 (編址元胞元素內(nèi)涵的直接賦值法)A 2,1 = S; A %顯示元胞數(shù)組 A 的元胞A = 2x4 char 1x1 sym 3x3 doublecelldisp( A ) %顯

6、示元胞數(shù)組 A 的元胞中的內(nèi)容A1,1 =這是 元胞數(shù)組 A2,1 = sin(-3*t)*exp(-t) A1,2 = A2,2 = 1 4 7 2 5 8 3 6 921class( A(2,1) ) %元胞的類(lèi)型 ()ans =cellclass( A2,1 ) %元胞的內(nèi)容的類(lèi)型 ans =symA( 2,1 ) % A 的第2行第1列的元胞ans = 1x1 symA 2,1 % A 的第2行第1列的元胞中的內(nèi)容ans = sin(-3*t)*exp(-t) 顯示元胞數(shù)組內(nèi)容的指令是 celldisp。如果直接在指令窗口輸入元胞數(shù)組名,則只能看到元胞內(nèi)容的屬性,不顯示元胞的內(nèi)容。單元

7、素的元胞除外,可以顯示元胞的內(nèi)容。223.2.2 元胞數(shù)組的擴(kuò)充、收縮和重組 元胞數(shù)組的擴(kuò)充、收縮和重組的方法大致與數(shù)值數(shù)組情況相同。(1)元胞數(shù)組的擴(kuò)充C=cell(2); % 預(yù)設(shè)(22)空元胞數(shù)組C(:,1)=char(Another,text string);10:-1:1 C = 2x11 char 1x10 double CC=C CC_C=C;C CC = 2x11 char 2x11 char 1x10 double 1x10 double C_C = 2x11 char 1x10 double 2x11 char 1x10 double 23 例:例:cellplot能用圖形

8、形象化地表示元胞數(shù)組的內(nèi)容。(C_C取自上例) cellplot(C_C,legend) 圖 元胞數(shù)組C_C的形象化結(jié)構(gòu)圖1.522.533.544.555.524(2)元胞數(shù)組的收縮 C_C(3,:)= %刪除第三行,使C_C成為(32)的元胞數(shù)組 C_C = 2x11 char 1x10 double 1x10 double (3)元胞數(shù)組的重組例:把C_C重組成(23)的元胞數(shù)組R=reshape(C_C,2,3)R = 2x11 char 1x10 double 1x10 double 253.2.3 元胞數(shù)組內(nèi)容的調(diào)取 前面已經(jīng)講過(guò),花括號(hào)用于內(nèi)容編制和尋訪(fǎng),本節(jié)將更詳細(xì)地闡述調(diào)取元

9、胞數(shù)組內(nèi)容的方法?!纠?.2-6】元胞數(shù)組內(nèi)容的調(diào)取示例。 (1) 選一個(gè)元胞f1=R(1,3)class(f1) f1 = ans = cell(2)選一個(gè)元胞的內(nèi)容f2=R1,3class(f2) f2 = ans = double(3)選元胞內(nèi)的子數(shù)組f3=R1,1(:,1 2 5 6 7) f3 =Anherte st(4)同時(shí)調(diào)取多個(gè)元胞內(nèi)容f4,f5,f6=deal(R1,3,4) f4 =Another text stringf5 = 10 9 8 7 6 5 4 3 2 1f6 = 注:deal可把輸入宗量逐個(gè)分配給輸出宗量使用26 3.3 架構(gòu)數(shù)組特點(diǎn):1) 基本組成部分是構(gòu)

10、架(Structure),數(shù)組中的每個(gè)構(gòu)架是平等的,以下標(biāo)區(qū)分各個(gè)構(gòu)架。2) 構(gòu)架必須劃分成“域”后才能使用。3) 構(gòu)架不能直接存放數(shù)據(jù),數(shù)據(jù)必須存放在構(gòu)架下面的“域”中。4) 構(gòu)架的域可以存放任意類(lèi)型、任意大小的數(shù)組(數(shù)值數(shù)組、字符串?dāng)?shù)組、符號(hào)對(duì)象、元胞等)。5) 不同構(gòu)架的同名域中可以存放不同類(lèi)型的內(nèi)容。6) 構(gòu)架數(shù)組可以是任意維的,可以利用下標(biāo)尋址。273.3.1 構(gòu)架數(shù)組的直接創(chuàng)建法及顯示 構(gòu)架數(shù)組的結(jié)構(gòu)形式與一般數(shù)組(如數(shù)值數(shù)組)不同【例1】本例通過(guò)溫室數(shù)據(jù)(包括溫室名、容積、溫度、濕度等)演示:?jiǎn)螛?gòu)架的創(chuàng)建和顯示。(1)直接對(duì)域賦值法產(chǎn)生)直接對(duì)域賦值法產(chǎn)生“單構(gòu)架單構(gòu)架”,即(,

11、即(11)構(gòu)架數(shù)組)構(gòu)架數(shù)組green_=一號(hào)房一號(hào)房; % 構(gòu)架的域由(構(gòu)架名)構(gòu)架的域由(構(gòu)架名).(域名)標(biāo)識(shí)(域名)標(biāo)識(shí)green_house.volume=2000立方米立方米;green_house.parameter.temperature=31.2 30.4 31.6 28.7 29.7 31.1 30.9 29.6;green_house.parameter.humidity=62.1 59.5 57.7 61.5 62.0 61.9 59.2 57.5;(2)顯示)顯示“單構(gòu)架單構(gòu)架”結(jié)構(gòu)和內(nèi)容結(jié)構(gòu)和內(nèi)容 green_house % 顯示單構(gòu)架結(jié)構(gòu)顯示單

12、構(gòu)架結(jié)構(gòu)green_house = name: 一號(hào)房 volume: 2000立方米 parameter: 1x1 struct green_house.parameter % 顯示顯示parameter域中內(nèi)容域中內(nèi)容ans = temperature: 2x4 double humidity: 2x4 double green_house.parameter.temperature %顯示顯示temperature域中的內(nèi)容域中的內(nèi)容 ans = 31.2000 30.4000 31.6000 28.7000 29.7000 31.1000 30.9000 29.6000 28【例2】本

13、例演示構(gòu)架數(shù)組的創(chuàng)建和顯示,并利用構(gòu)架數(shù)組保存一個(gè)溫室群的數(shù)據(jù)。本例的運(yùn)行以例1為先導(dǎo)。(1)直接對(duì)域賦值法“構(gòu)架數(shù)組”green_house(2,3).name=六號(hào)房六號(hào)房;(2)顯示構(gòu)架數(shù)組的結(jié)構(gòu)和構(gòu)架元素的內(nèi)容green_house %顯示構(gòu)架數(shù)組的結(jié)構(gòu):構(gòu)架行列數(shù);構(gòu)架的域 green_house = 2x3 struct array with fields: name volume parameter green_house(2,3) %顯示元素構(gòu)架的結(jié)構(gòu):域;是否有子域 ans = name: 六號(hào)房 volume: parameter: 293.3.2 利用構(gòu)架函數(shù)創(chuàng)建構(gòu)架數(shù)組

14、 專(zhuān)門(mén)的構(gòu)架函數(shù):struct【例3】利用構(gòu)造函數(shù)struct,建立溫室群的數(shù)據(jù)庫(kù)。(1)struct預(yù)建空構(gòu)架數(shù)組方法之一a=cell(2,3);green_house_1=struct(name,a,volume,a,parameter,a(1,2) green_house_1 = 2x3 struct array with fields: name volume parameter (2)struct預(yù)建空構(gòu)架數(shù)組方法之二green_house_2=struct(name,a,volume,parameter,) green_house_2 = 2x3 struct array with

15、 fields: name volumeparameter 30(3) struct預(yù)建空構(gòu)架數(shù)組方法之三green_hopuse_3(2,3)=struct(name,volume,parameter,) green_hopuse_3 = 2x3 struct array with fields: name volume parameter (4) struct創(chuàng)建構(gòu)架數(shù)組方法之四a1=六號(hào)房六號(hào)房;a2=3200立方米立方米;green_house_4(2,3)=struct(name,a1,volume,a2,parameter,);T6=31.2,30.4,31.6,28.7;29.7

16、,31.1,30.9,29.6;green_house_4(2,3).parameter.temperature=T6;green_house_4 ans = 2x3 struct array with fields: name volume parameter 313.3.3 數(shù)值運(yùn)算操作和函數(shù)對(duì)構(gòu)架數(shù)組的應(yīng)用 如果構(gòu)架數(shù)組的域中內(nèi)容是數(shù)值類(lèi)型數(shù)據(jù),那么第二章中介紹的所有操作和函數(shù)也都適用。例:數(shù)值運(yùn)算操作和函數(shù)在構(gòu)架域上的作用。n_ex=5;% 構(gòu)架數(shù)組的長(zhǎng)度構(gòu)架數(shù)組的長(zhǎng)度f(wàn)or k=1:n_ex,ex(k).f=(k-1)*n_ex+1:5;end ex % 創(chuàng)建(創(chuàng)建(15)構(gòu)架數(shù)組)

17、構(gòu)架數(shù)組ex = % 顯示構(gòu)架數(shù)組的結(jié)構(gòu)顯示構(gòu)架數(shù)組的結(jié)構(gòu)1x5 struct array with fields: f %顯示構(gòu)架數(shù)組的域中內(nèi)容顯示構(gòu)架數(shù)組的域中內(nèi)容disp(blanks(10) 構(gòu)架域中內(nèi)容構(gòu)架域中內(nèi)容)for k=1:n_ex,disp(ex(k).f),end 構(gòu)架域中內(nèi)容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 class(ex(1).f) ans =double %對(duì)各構(gòu)架域中數(shù)值數(shù)組相應(yīng)位置的數(shù)據(jù)相加求和對(duì)各構(gòu)架域中數(shù)值數(shù)組相應(yīng)位置的數(shù)據(jù)相加求和sum_f=zeros(1,5);for k=1:n_ex,sum_f=sum_f+ex(k).f;end,sum_f sum_f = 55 60 65 70 75 %對(duì)構(gòu)架數(shù)組域中各元素分別求平方根對(duì)構(gòu)架數(shù)組域中各元素分別求平方根disp(blanks(20) ex.f的平方根值的平方根值)for k=1:n_ex,disp(

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論