第三章 字符串數組、元胞數組和構架數組_第1頁
第三章 字符串數組、元胞數組和構架數組_第2頁
第三章 字符串數組、元胞數組和構架數組_第3頁
第三章 字符串數組、元胞數組和構架數組_第4頁
第三章 字符串數組、元胞數組和構架數組_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、1第三章 字符串數組、元胞數組和構架數組2 本章涉及MATLAB中另三個重要的基本數據類型。這章內容對理解MATLAB自身的面向對象特征和復雜指令的正確使用十分重要。 33.1 字符串數組(1) 創建方式的比較 字符串與數值是兩種不同的數據類型,故它們的創建方式也就不同: ()數值變量是通過指令窗口中的數字賦值創建的; ()字符變量是在指令窗中,先把待建的字符放在“單引號對”中,再按Enter鍵。 注:單引號必須在英文狀態下輸入4(2)基本規則:所有字符串都用單引號括起來;字符串中的每一個字符都是該字符串變量中的一個元素;字符串中的字符以ASC碼形式存儲,因而區分大小寫。53.1.1 字符串入

2、門 String1=b; String2=This is an example! % 英文字母、空格、數字、標點、中文字符 String3=例子char array; % 都是占一個元素位,兩個字節(數值標量需8個字節) 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)創建串數組:“單引號對”必須在英文狀態下輸入。eg: a=This is an example. a = This is an example. 2)串數組的大?。簊ize指令獲得串數組的大小。串中的每一個字符,包括中英文字符、空格、標點都算一個元素。eg: size(a) ans = 1 19 3)串數組的元素標識:自左向右用數字1、2、3、4標識。eg: a14=a(1:4) ra=a(end:-1:1) a14 = This ra = .elpmaxe na si sihT 3

4、.1.2 字符串數組的屬性和標識74) ASCII碼顯示:abs和double指令可以顯示串數組對應的ASCII碼數值數組。char指令則可以把ASCII碼數值數組轉換成串數組。eg: ascii_a=double(a) % 產生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碼數組的操作:可

5、以對ASCII碼數組進行數值數組的各種運算。eg: w=find(a=a&a C = char( 這是, 元胞數組 ); %兩行的字符串數組R = reshape( 1:9,3,3 ); % 3*3 的數值數組S = sym( sin(-3*t)*exp(-t) ); %符號表達式A( 1,1 ) = C ; %對元胞數組 A 進行賦值 (外標識元胞元素賦值法)A 2,2 = R; % 注意 和 () 的區別 (編址元胞元素內涵的直接賦值法)A 2,1 = S; A %顯示元胞數組 A 的元胞A = 2x4 char 1x1 sym 3x3 doublecelldisp( A ) %顯

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

7、素的元胞除外,可以顯示元胞的內容。223.2.2 元胞數組的擴充、收縮和重組 元胞數組的擴充、收縮和重組的方法大致與數值數組情況相同。(1)元胞數組的擴充C=cell(2); % 預設(22)空元胞數組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、形象化地表示元胞數組的內容。(C_C取自上例) cellplot(C_C,legend) 圖 元胞數組C_C的形象化結構圖1.522.533.544.555.524(2)元胞數組的收縮 C_C(3,:)= %刪除第三行,使C_C成為(32)的元胞數組 C_C = 2x11 char 1x10 double 1x10 double (3)元胞數組的重組例:把C_C重組成(23)的元胞數組R=reshape(C_C,2,3)R = 2x11 char 1x10 double 1x10 double 253.2.3 元胞數組內容的調取 前面已經講過,花括號用于內容編制和尋訪,本節將更詳細地闡述調取元

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

10、架(Structure),數組中的每個構架是平等的,以下標區分各個構架。2) 構架必須劃分成“域”后才能使用。3) 構架不能直接存放數據,數據必須存放在構架下面的“域”中。4) 構架的域可以存放任意類型、任意大小的數組(數值數組、字符串數組、符號對象、元胞等)。5) 不同構架的同名域中可以存放不同類型的內容。6) 構架數組可以是任意維的,可以利用下標尋址。273.3.1 構架數組的直接創建法及顯示 構架數組的結構形式與一般數組(如數值數組)不同【例1】本例通過溫室數據(包括溫室名、容積、溫度、濕度等)演示:單構架的創建和顯示。(1)直接對域賦值法產生)直接對域賦值法產生“單構架單構架”,即(,

11、即(11)構架數組)構架數組green_=一號房一號房; % 構架的域由(構架名)構架的域由(構架名).(域名)標識(域名)標識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)顯示)顯示“單構架單構架”結構和內容結構和內容 green_house % 顯示單構架結構顯示單

12、構架結構green_house = name: 一號房 volume: 2000立方米 parameter: 1x1 struct green_house.parameter % 顯示顯示parameter域中內容域中內容ans = temperature: 2x4 double humidity: 2x4 double green_house.parameter.temperature %顯示顯示temperature域中的內容域中的內容 ans = 31.2000 30.4000 31.6000 28.7000 29.7000 31.1000 30.9000 29.6000 28【例2】本

13、例演示構架數組的創建和顯示,并利用構架數組保存一個溫室群的數據。本例的運行以例1為先導。(1)直接對域賦值法“構架數組”green_house(2,3).name=六號房六號房;(2)顯示構架數組的結構和構架元素的內容green_house %顯示構架數組的結構:構架行列數;構架的域 green_house = 2x3 struct array with fields: name volume parameter green_house(2,3) %顯示元素構架的結構:域;是否有子域 ans = name: 六號房 volume: parameter: 293.3.2 利用構架函數創建構架數組

14、 專門的構架函數:struct【例3】利用構造函數struct,建立溫室群的數據庫。(1)struct預建空構架數組方法之一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預建空構架數組方法之二green_house_2=struct(name,a,volume,parameter,) green_house_2 = 2x3 struct array with

15、 fields: name volumeparameter 30(3) struct預建空構架數組方法之三green_hopuse_3(2,3)=struct(name,volume,parameter,) green_hopuse_3 = 2x3 struct array with fields: name volume parameter (4) struct創建構架數組方法之四a1=六號房六號房;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 數值運算操作和函數對構架數組的應用 如果構架數組的域中內容是數值類型數據,那么第二章中介紹的所有操作和函數也都適用。例:數值運算操作和函數在構架域上的作用。n_ex=5;% 構架數組的長度構架數組的長度for k=1:n_ex,ex(k).f=(k-1)*n_ex+1:5;end ex % 創建(創建(15)構架數組)

17、構架數組ex = % 顯示構架數組的結構顯示構架數組的結構1x5 struct array with fields: f %顯示構架數組的域中內容顯示構架數組的域中內容disp(blanks(10) 構架域中內容構架域中內容)for k=1:n_ex,disp(ex(k).f),end 構架域中內容 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 %對各構架域中數值數組相應位置的數據相加求和對各構架域中數值數組相應位置的數據相加求和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 %對構架數組域中各元素分別求平方根對構架數組域中各元素分別求平方根disp(blanks(20) ex.f的平方根值的平方根值)for k=1:n_ex,disp(

溫馨提示

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

評論

0/150

提交評論