官术网_书友最值得收藏!

2.7 結(jié)構(gòu)數(shù)組和元胞數(shù)組

在MATLAB語(yǔ)言中,有兩種復(fù)雜的數(shù)據(jù)類型,分別是結(jié)構(gòu)數(shù)組(Structure Array)和元胞數(shù)組(Cell Array),這兩種類型都能在一個(gè)數(shù)組里存放不同類型的數(shù)據(jù)。

2.7.1 結(jié)構(gòu)數(shù)組

結(jié)構(gòu)數(shù)組又稱結(jié)構(gòu)體,能將一組具有不同屬性的數(shù)據(jù)放到統(tǒng)一變量名下進(jìn)行管理。結(jié)構(gòu)體的基本組成是結(jié)構(gòu),每個(gè)結(jié)構(gòu)可以有多個(gè)字段,可以存放多種不同類型的數(shù)據(jù)。

1.結(jié)構(gòu)數(shù)組的創(chuàng)建

結(jié)構(gòu)數(shù)組的創(chuàng)建方法有兩種:直接創(chuàng)建法和用struct函數(shù)創(chuàng)建。

(1)直接創(chuàng)建法可以直接使用賦值語(yǔ)句,對(duì)結(jié)構(gòu)數(shù)組的元素賦值不同類型的數(shù)據(jù)。具體格式如下:

例如,構(gòu)建一個(gè)班級(jí)學(xué)生信息結(jié)構(gòu)數(shù)組dz1143,有三個(gè)元素dz1143(1)、dz1143(2)和dz1143(3),每個(gè)元素有四個(gè)字段Name、Sex、Nationality和Score,分別存放學(xué)生姓名、性別、國(guó)籍和成績(jī)等信息。

程序代碼如下:

其中,dz1143是結(jié)構(gòu)數(shù)組名,dz1143(1)、dz1143(2)和dz1143(3)分別是結(jié)構(gòu)數(shù)組的元素,Name、Sex、Nationality和Score分別是字段。

(2)利用函數(shù)struct創(chuàng)建結(jié)構(gòu)數(shù)組還可以使用struct函數(shù)。函數(shù)具體格式如下:

例如:

2.結(jié)構(gòu)體內(nèi)部數(shù)據(jù)的獲取

(1)使用“.”符號(hào)獲取結(jié)構(gòu)體內(nèi)部數(shù)據(jù),對(duì)于上面例題中的dz1143結(jié)構(gòu)體,用下面命令獲得結(jié)構(gòu)體的各個(gè)字段的內(nèi)部數(shù)據(jù):

(2)使用函數(shù)getfield獲取結(jié)構(gòu)體內(nèi)部數(shù)據(jù),getfield函數(shù)的格式如下:

其中,S是結(jié)構(gòu)體名稱,S_index是結(jié)構(gòu)體的元素,fieldname為結(jié)構(gòu)體的字段,field_index是字段中數(shù)組元素的下標(biāo)。

例如:

(3)使用函數(shù)fieldnames獲取結(jié)構(gòu)體所有字段,fieldnames函數(shù)的格式如下:

例如:

3.結(jié)構(gòu)體的操作函數(shù)

(1)可以使用setfield函數(shù)對(duì)結(jié)構(gòu)體的數(shù)據(jù)進(jìn)行修改,函數(shù)的格式如下:

例如,修改結(jié)構(gòu)體dz1143(1)中的Sex字段的內(nèi)容:

(2)可以使用rmfield函數(shù)刪除結(jié)構(gòu)體的字段,函數(shù)格式如下:

例如,刪除結(jié)構(gòu)體dz1143中的Nationality字段:

2.7.2 元胞數(shù)組

元胞數(shù)組是常規(guī)矩陣的擴(kuò)展,其基本元素是元胞,每個(gè)元胞可以存放各種不同類型的數(shù)據(jù),如數(shù)值矩陣、字符串、元胞數(shù)組和結(jié)構(gòu)數(shù)組等。

1.元胞數(shù)組的創(chuàng)建

創(chuàng)建元胞數(shù)組的方法和一般數(shù)值矩陣方法相似,用大括號(hào)將所有元胞括起來(lái)。創(chuàng)建元胞數(shù)組的方法有兩種:直接創(chuàng)建和使用函數(shù)創(chuàng)建。

(1)直接創(chuàng)建元胞數(shù)組可以一次性輸入所有元胞值,也可以每次賦值一個(gè)元胞值。

另外還可以根據(jù)各元胞內(nèi)容創(chuàng)建元胞數(shù)組,例如:

由上面結(jié)果可知,用三種不同的直接輸入法創(chuàng)建的元胞數(shù)組A、B和C結(jié)果是一樣的。注意()和{}的區(qū)別,創(chuàng)建元胞數(shù)組無(wú)論用哪種方法,等式的左邊或者右邊一般都需要使用一次{},若元胞是由元胞數(shù)組構(gòu)成,則需要用兩次{}。

(2)MATLAB語(yǔ)言可以使用cell函數(shù)創(chuàng)建元胞數(shù)組。函數(shù)格式如下:

cell函數(shù)可以創(chuàng)建一個(gè)m×n空的元胞數(shù)組,對(duì)于每個(gè)元胞的數(shù)據(jù)還需要單獨(dú)賦值。例如:

2.元胞數(shù)組的操作

在MATLAB中,創(chuàng)建元胞數(shù)組后,可以通過(guò)下面幾種方法,引用和提取元胞數(shù)組元素的數(shù)據(jù)。

(1)用{}提取元胞數(shù)組的元素?cái)?shù)據(jù)。

例如:

(2)用()只能定位元胞的位置,返回的仍然是元胞類型的數(shù)組,不能得到詳細(xì)元胞元素?cái)?shù)據(jù),例如:

(3)用deal函數(shù)提取多個(gè)元胞元素的數(shù)據(jù)。

例如:

(4)用celldisp函數(shù)顯示元胞數(shù)組中的詳細(xì)數(shù)據(jù)內(nèi)容。

在MATLAB命令窗口中,輸入元胞數(shù)組名稱,只顯示元胞數(shù)組的各元素的數(shù)據(jù)類型和尺寸,不直接顯示各元素的詳細(xì)內(nèi)容。可以用celldisp函數(shù)顯示元胞數(shù)組中各元素的詳細(xì)數(shù)據(jù)內(nèi)容。

例如:

(5)用cellplot函數(shù)以圖形方式顯示元胞數(shù)組的結(jié)構(gòu)。

在MATLAB中,可以用cellplot函數(shù)以圖形方式顯示元胞數(shù)組的結(jié)構(gòu)。

例如,創(chuàng)建一個(gè)元胞數(shù)組,并用圖形方式顯示。

代碼如下:

用cellplot函數(shù)顯示元胞數(shù)組A的結(jié)果如圖2-2所示,其中用不同的顏色和形狀表示元胞數(shù)組的各元素的內(nèi)容。

圖2-2 元胞數(shù)組顯示圖

主站蜘蛛池模板: 抚远县| 本溪| 桐梓县| 永善县| 阿勒泰市| 杭锦旗| 金川县| 吐鲁番市| 嫩江县| 崇文区| 泾源县| 合阳县| 宕昌县| 砚山县| 遂宁市| 乐安县| 通化市| 永济市| 南澳县| 九江市| 响水县| 都江堰市| 沁阳市| 临西县| 封开县| 西乡县| 白城市| 吉首市| 治多县| 卢龙县| 鹤岗市| 青浦区| 汽车| 左云县| 吉安市| 高密市| 宁南县| 景洪市| 施甸县| 高州市| 孝感市|