- MATLAB/Simulink權(quán)威指南:開(kāi)發(fā)環(huán)境、程序設(shè)計(jì)、系統(tǒng)仿真與案例實(shí)戰(zhàn)
- 徐國(guó)保 張冰 石麗梅 吳凡
- 1390字
- 2019-12-20 20:33:28
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ù)組顯示圖
- 21小時(shí)學(xué)通AutoCAD
- LabVIEW虛擬儀器從入門到測(cè)控應(yīng)用130例
- R Machine Learning By Example
- 協(xié)作機(jī)器人技術(shù)及應(yīng)用
- Getting Started with MariaDB
- 大數(shù)據(jù)挑戰(zhàn)與NoSQL數(shù)據(jù)庫(kù)技術(shù)
- 系統(tǒng)安裝與重裝
- 自動(dòng)控制理論(非自動(dòng)化專業(yè))
- 工業(yè)機(jī)器人應(yīng)用案例集錦
- Linux Shell編程從初學(xué)到精通
- 網(wǎng)絡(luò)存儲(chǔ)·數(shù)據(jù)備份與還原
- 基于ARM9的小型機(jī)器人制作
- 常用傳感器技術(shù)及應(yīng)用(第2版)
- ROS Robotics By Example(Second Edition)
- 電機(jī)與電力拖動(dòng)