matlab第4章-字符串單元資料課件_第1頁(yè)
matlab第4章-字符串單元資料課件_第2頁(yè)
matlab第4章-字符串單元資料課件_第3頁(yè)
matlab第4章-字符串單元資料課件_第4頁(yè)
matlab第4章-字符串單元資料課件_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Matlab工程應(yīng)用基礎(chǔ)

Application

ofMatlab

in

Engineering第四章

字符串單元電子信息工程教研室2023/9/192第4章字符串單元電子信息工程教研室本章學(xué)習(xí)目標(biāo)掌握字符串?dāng)?shù)組、復(fù)雜字符串?dāng)?shù)組的創(chuàng)建及串轉(zhuǎn)

換函數(shù)與串操作函數(shù)掌握元胞數(shù)組的創(chuàng)建,元胞數(shù)組的顯示、尋訪、擴(kuò)充、收縮和重組方法及元胞數(shù)組相關(guān)函數(shù)掌握構(gòu)架數(shù)組的創(chuàng)建、構(gòu)架數(shù)組的相關(guān)函數(shù)及構(gòu)

架數(shù)組的操作掌握幾種數(shù)組的轉(zhuǎn)換2023/9/193第4章字符串單元電子信息工程教研室主要內(nèi)容3.13.23.33.4字符串?dāng)?shù)組元胞數(shù)組構(gòu)

數(shù)

組幾種數(shù)組的轉(zhuǎn)換2023/10/2內(nèi)容簡(jiǎn)介字符串?dāng)?shù)組(Character

StringArray)字符串?dāng)?shù)組的屬性和標(biāo)識(shí)復(fù)雜字符串?dāng)?shù)組的創(chuàng)建串轉(zhuǎn)換函數(shù)和串操作函數(shù)元胞數(shù)組(Cell

Array)元胞數(shù)組的創(chuàng)建元胞數(shù)組的內(nèi)容顯示元胞數(shù)組的內(nèi)容獲取元胞數(shù)組的擴(kuò)充、收縮和重組構(gòu)架數(shù)組(Structure

Array)構(gòu)架數(shù)組的創(chuàng)建構(gòu)架數(shù)組數(shù)據(jù)的獲取和設(shè)置構(gòu)架數(shù)組域的獲取數(shù)據(jù)類型歸納幾種數(shù)組的轉(zhuǎn)換數(shù)值數(shù)組與字符串?dāng)?shù)組轉(zhuǎn)換數(shù)值數(shù)組與元胞數(shù)組的轉(zhuǎn)換元胞數(shù)組與構(gòu)架數(shù)組的轉(zhuǎn)換4第4章字符串單元電子信息工程教研室2023/10/25第4章字符串單元電子信息工程教研室3.1

字符串?dāng)?shù)組(Character

String

Array)1.字符串?dāng)?shù)組的創(chuàng)建創(chuàng)建字符串和創(chuàng)建數(shù)值是兩種不同的數(shù)據(jù)類型,所以它們的創(chuàng)建方式也是不同;數(shù)值變量時(shí)通過指令窗口中的數(shù)字賦值創(chuàng)建的字符變量是在指令窗口中,先把待建的字符放在“單引號(hào)對(duì)”中再按Enter鍵。注:?jiǎn)我?hào)必須在英文狀態(tài)下輸入基本規(guī)則所有字符串都用單引號(hào)括起來;字符串中的每一個(gè)字符都是該字符串變量中的一個(gè)元素;字符串中的字符以ASCⅡ碼形式存儲(chǔ),因而區(qū)分大小寫電子信息工程教研室2023/10/2舉例說明【例3-1】字符串入門>>String1='b';>>String2='This

is

an

example!';>>String3='例子''char

array''';>>s1=class(String1)s1

=char>>s2=size(String2)s2

=1

19>>

whosName%英文字母、空格、數(shù)字、標(biāo)點(diǎn)、中文字符%都是占一個(gè)元素位,兩個(gè)字節(jié)SizeBytes

ClassString11x12

chararrayString21x1938

chararrayString31x1428

chararrays11x48

chararrays21x216

double

arrayGrand

t6otalis

40

elements

using

92bytes第4章字符串單元2023/10/27第4章字符串單元電子信息工程教研室在MATLAB中,字符串是作為字符數(shù)組來引入的;一個(gè)字符串由多個(gè)字符組成,用單引號(hào)('')來界定;字符串是按行向量進(jìn)行存儲(chǔ)的,每一字符(包括空格)是以其ASCII碼的形式存放。2023/10/28第4章字符串單元電子信息工程教研室3.1.1

字符串?dāng)?shù)組的屬性和標(biāo)識(shí)1.

創(chuàng)建串?dāng)?shù)組必須將待建字符放在“單引號(hào)對(duì)”中,當(dāng)串中本身包含單引號(hào)時(shí),每個(gè)單引號(hào)符用“連續(xù)的兩個(gè)單引號(hào)”表示。2.

串?dāng)?shù)組的大小size指令可獲得串?dāng)?shù)組的大小。串中的每一個(gè)字符,包括中英文字符、空格、標(biāo)點(diǎn)都算一個(gè)元素。3.

串?dāng)?shù)組的元素標(biāo)識(shí)按從左至右的順序依次用1、2、3、4…等標(biāo)識(shí)元素在串中的位置。2023/10/29第4章字符串單元電子信息工程教研室4.串?dāng)?shù)組的ASCII碼指令abs和double可以顯示串?dāng)?shù)組對(duì)應(yīng)的ASCII碼數(shù)值數(shù)組,指令char則可把ASCII碼數(shù)值數(shù)組轉(zhuǎn)換成串?dāng)?shù)組。5.字符串ASCII碼數(shù)組的操作可以對(duì)ASCII碼數(shù)組進(jìn)行數(shù)值數(shù)組的各種運(yùn)算。但其結(jié)果就變成一般數(shù)值向量的運(yùn)算,而不再是字符串的運(yùn)算。注意:必須在英文狀態(tài)下輸入“單引號(hào)對(duì)”。將多個(gè)字符串變量直接用“,”連接,可構(gòu)成一個(gè)較長(zhǎng)的新字符串變量。2023/10/210第4章字符串單元電子信息工程教研室【例3-2】串?dāng)?shù)組基本操作>>

string='this

is

an

example!'string

=this

is

anexample!>>

s_1=string(end:-1:1)s_1

=!elpmaxe

na

sisiht>>

s_2=string(end:-2:1)%輸入字符串string%倒序排列string得到s_1%倒序排列string且每隔一個(gè)字符取一個(gè)元素得到s_2s_2

=!lmx

as

it>>w=string>=‘a(chǎn)’&string<=‘z’%找出所有小寫英文字符,用邏輯數(shù)組表示2023/10/211第4章字符串單元電子信息工程教研室w

=Columns

1

through121

1

1

1

0

1

1

0

1

1

0

1Columns

13

through191

1

1

1

1

1

0>>STRING=string;%定義新串STRING,其內(nèi)容與string相同>>

STRING(w)=char(string(w)-32)%將小寫字符轉(zhuǎn)換成大寫字符(ASCII

碼相差32)STRING

=THIS

IS

ANEXAMPLE!>>Str=['Exm03_2.m',string(5:end)]Str

=Exm03_2.m

is

an

example!%構(gòu)造新的字符串Str2023/10/212第4章字符串單元電子信息工程教研室3.1.2

復(fù)雜字符串?dāng)?shù)組的創(chuàng)建1.多行串?dāng)?shù)組的直接創(chuàng)建可以直接創(chuàng)建多行字符串?dāng)?shù)組必須保證各行等長(zhǎng),可以利用增減“空格”來實(shí)現(xiàn)。%6個(gè)字符%17個(gè)字符>>

s=['Hello,

''Nice

to

meet

you!

']???

Error

using

==>

vertcatAll

rows

in

the

bracketed

expression

must

have

thesamenumber

of

columns.>>

s=['Hello,','

'*ones(1,11)'Nice

to

meet

you!']s

=Hello,Nice

to

meet

you!>>size(s)ans

=%補(bǔ)充11個(gè)空格2

172023/10/213第4章字符串單元電子信息工程教研室2.利用串操作函數(shù)創(chuàng)建多行串?dāng)?shù)組利用專門的str2mat、strvcat和char函數(shù)可以構(gòu)造出字符串?dāng)?shù)組,而不必考慮每行的字符數(shù)是否相等,總是按最長(zhǎng)的設(shè)置,不足的末尾用空格補(bǔ)齊。2023/10/2>>

s=char('Hello,',

'Nice

to

meet

you!');>>

s=str2mat('Hello,',

'Nice

to

meet

you!');>>

s=strvcat('Hello,',

'Nice

to

meet

you!');>>

s1=str2mat('Hello,',''

,'Nice

to

meet

you!');>>

s2=strvcat('Hello,',

'','Nice

to

meet

you!');>>s1,s2>>s_s=size(s),s_s1=size(s1),s_s2=size(s2)s_s

=2

17s_s1

=3

17s_s2

=2

17s

=Hello,Nice

to

meet

you!s1

=Hello,14第4章字符串單元電子信息工程教研室s2

=Hello,Nice

to

meet

you!Nice

to

meet

you!區(qū)別:str2mat認(rèn)為空串代表空行;

strvcat省略空串。2023/10/215第4章字符串單元電子信息工程教研室3.利用串轉(zhuǎn)換函數(shù)產(chǎn)生數(shù)碼字符串常用的數(shù)組/字符串轉(zhuǎn)換函數(shù)有int2str,num2str,

mat2str

。int2str:把整數(shù)數(shù)組轉(zhuǎn)換成字符串?dāng)?shù)組,非整數(shù)將被四舍五入后再轉(zhuǎn)換;num2str

:把非整數(shù)數(shù)組轉(zhuǎn)換成字符串?dāng)?shù)組,常用于圖形中數(shù)據(jù)點(diǎn)的標(biāo)識(shí);mat2str:把數(shù)值數(shù)組轉(zhuǎn)換成字符串?dāng)?shù)組。2023/10/216第4章字符串單元電子信息工程教研室>>

a=[0.9576

0.8

2.151;4.0

5

7.8];>>

a1=int2str(a)

;>>a2=num2str(a,2);>>a3=mat2str(a,2);>>a,a1,a2,a3a

=%2×3數(shù)值數(shù)組%取整數(shù)%保持2位有效數(shù)字,轉(zhuǎn)換為串%保持2位有效數(shù)字,轉(zhuǎn)換為一行串0.9576

0.8000

2.15104.0000

5.0000

7.8000a1

=1

1

24

5

8a2

=0.96

0.8

2.24

5

7.8a3

=[0.96

0.8

2.2;4

5

7.8]2023/10/217第4章字符串單元電子信息工程教研室cleart

=

0

:

0.01

:

10;y

=

exp(-2*t

)

.*

sin(

3*t

);

[

y_max,

i_max

]

=

max(

y

);t_text

=

[

't

=

',

num2str(

t(i_max)

)

];y_text

=

[

'y

=

',

num2str(

y_max

)

];max_text

=

char(

'Maxium',

t_text,

y_text);Title

=

[

'y

=

exp(-2*t

)

.*

sin(

3*t

)'

];Figureplot(

t,zeros(

size(t)

),

'k'

)hold

onplot(

t,

y,

'b'

)plot(

t(i_max),

y_max,

'r.',

'MarkerSize',20

)text(

t(i_max)+0.3,

y_max+0.05,max_text

)title(

Title);xlabel(

't'

)ylabel(

'y'

)hold

off%清除內(nèi)存變量%時(shí)間t

從0到10

每隔0.01均勻采樣%對(duì)應(yīng)每一個(gè)t求y值%求最大值y_max

及其下標(biāo)i_max%生成最大值點(diǎn)的橫坐標(biāo)字符串%生成最大值點(diǎn)的縱坐標(biāo)字符串%三行字符來標(biāo)識(shí)最大值點(diǎn)%圖名稱字符串%新建一個(gè)圖形窗%畫一條黑色的水平線%保持圖形不被清除%藍(lán)色實(shí)線畫曲線y(t)%大小為20

的紅色圓點(diǎn)標(biāo)記最大值點(diǎn)%在最大值點(diǎn)附近顯示注釋字符%顯示圖名%顯示橫坐標(biāo)名%顯示縱坐標(biāo)名%取消圖形保持【例3-3】作出函數(shù)y=e-2tsin(3t)的圖形,并標(biāo)注最大值點(diǎn)2023/10/218第4章字符串單元電子信息工程教研室2023/10/219第4章字符串單元電子信息工程教研室3.1.3

串轉(zhuǎn)換函數(shù)和串操作函數(shù)指

令含

義指

令含

義abs把串譯成ASCII碼base2decbase,bin,hex與dec之間的轉(zhuǎn)換。

base:任意進(jìn)制串

bin:二進(jìn)制串hex:十六進(jìn)制串

dec:十進(jìn)制整數(shù)char任意類型轉(zhuǎn)換成串bin2decdouble任意類型轉(zhuǎn)換成雙精度數(shù)值hex2decfprintf格式化數(shù)據(jù)寫到文件或屏幕dec2basesprintf以控制格式把數(shù)值轉(zhuǎn)換為串dec2binsscanf在格式控制下把串轉(zhuǎn)換成數(shù)值dec2hexsetstr把ASCII碼譯成串int2str整數(shù)轉(zhuǎn)換成串str2num串轉(zhuǎn)換成數(shù)值mat2str數(shù)值矩陣轉(zhuǎn)換成串hex2num十六進(jìn)制串轉(zhuǎn)換成浮點(diǎn)數(shù)num2str數(shù)值轉(zhuǎn)換成串1.

字符串轉(zhuǎn)換函數(shù)2023/10/220第4章字符串單元電子信息工程教研室2.

字符串操作函數(shù)length:用來計(jì)算字符串的長(zhǎng)度(即組成字符的個(gè)數(shù))。char(s1,s2,…):將串s1,s2,…逐個(gè)寫成行,形成多行數(shù)組。

class

或ischar

:用來判斷某一個(gè)變量是否為字符串。class

函數(shù)返回char則表示為字符串,而ischar函數(shù)返回1表示為字符串。

strcmp(s1,s2):比較字符串s1

和s2

是否相同。返回值如果為1

則相同,為0則不同。

findstr(s1,s2):尋找在某個(gè)長(zhǎng)字符串s1

中的子字符串s2

,返回其起始位置。deblank(s):

刪除字符串尾部的空格。2023/10/221第4章字符串單元電子信息工程教研室%重復(fù)單引號(hào)來輸入含有單引號(hào)的字符串%字符串str2的長(zhǎng)度%查看字符串str1的ASCII碼>>str1='Hello'

;>>

str2=['I

like

''MATLAB''']str2

=I

like'MATLAB'>>length(str2)ans

=15>>x1=double(str1)x1

=72

101

108

108

111>>

x2=str1+1%字符串的數(shù)值運(yùn)算x2

=73

102

109109112>>

char(x1)%將ASCII碼轉(zhuǎn)換成字符串形式ans

=Hello>>

char(x2)ans

=Ifmmp2023/10/222第4章字符串單元電子信息工程教研室>>char(str1,str2)ans

=HelloI

like'MATLAB'%形成兩行字符>>strcat(str1,'!',str2,'.')%形成一長(zhǎng)串a(chǎn)ns

=Hello!I

like

'MATLAB'.>>strcmp(str1,str2)%比較兩串是否相同ans

=0>>findstr(str2,'like')%尋找子串‘like’的起始字符在主串中的下標(biāo)ans

=3>>isletter(str2)%以邏輯1指示串中英文字母的位置ans

=Columns

1

through121

0

1

1

1

1

0

0

1

1

1

1

Columns

13

through151

1

0>>

class(str1)

,class(x1),ans

=charans

=double%判斷變量類型2023/10/2執(zhí)行字符串如果需要直接“執(zhí)行”某一字符串,可以使用eval命令,效果就如同直接在MATLAB命令窗口內(nèi)輸入此命令。>>str3='a=2*5'str3

=a=2*5>>eval(str3)a

=10%執(zhí)行字符串顯示字符串字符串可以直接使用disp

命令顯示出來,即使后面加分號(hào)(;)也顯示。>>

disp('請(qǐng)輸入2*2的矩陣a')請(qǐng)輸入2*2的矩陣a>>str1='Hello'''MATLAB''']str1

=Hellostr2

=,

str2=['I

likeI

like'MATLAB'>>disp(char(str1,str2));HelloI

like'MATLAB'23第4章字符串單元電子信息工程教研室2023/10/224第4章字符串單元電子信息工程教研室3.2元胞數(shù)組(CellArray)特點(diǎn):元胞數(shù)組的基本組成單元是元胞(cell),元胞在數(shù)組中以下標(biāo)來進(jìn)行區(qū)分;元胞可以是任何類型、任意大小的數(shù)組(如:數(shù)值數(shù)組、字符串?dāng)?shù)組、符號(hào)對(duì)象等);一個(gè)元胞數(shù)組中各個(gè)元胞可以是不同類型的內(nèi)容;元胞數(shù)組的維數(shù)不受限制,可以采用單下標(biāo)或全下標(biāo)尋址;元胞和元胞里的內(nèi)容是兩個(gè)不同范疇的東西,分別通過“元胞外標(biāo)識(shí)(Indexing)”和”元胞內(nèi)編址(Content

Addressing)”來尋訪?!巴鈽?biāo)識(shí)的元元素”用圓括號(hào)對(duì)(),而“編址元胞元素內(nèi)涵”用花括號(hào)對(duì){},如A(2,3)表示元胞數(shù)組A第2行第3列的元胞,A{2,3}則表示元胞數(shù)組A第2行第3列的元胞中的內(nèi)容。2023/10/225第4章字符串單元電子信息工程教研室3.2.1

元胞數(shù)組的創(chuàng)建1.直接使用花括號(hào){}創(chuàng)建>>clear>>A={'This

is

the

first

Cell.',[1

2;3

4];eye(3),{'Tom','Jane'}}A

=[2x2

double]{1x2cell

}[1x23

char

][3x3

double]>>

whosName

SizeA

2x2Bytes

Class524 cell

arrayGrand

total

is

49

elements

using

524

bytes創(chuàng)建的元胞數(shù)組中的元胞A(1,1)是字符串,A(1,2)是數(shù)組,A(2,1)是數(shù)組,而A(2,2)為一個(gè)元胞數(shù)組。2023/10/226第4章字符串單元電子信息工程教研室2.

由各元胞創(chuàng)建-外標(biāo)識(shí)元胞元素賦值法>>B(1,1)={'Thisisthe

secondCell.'};B(1,2)={5+3*i};B(1,3)={[12;34;

56]};>>

BB

=%顯示元胞數(shù)組[1x24

char][5.0000+

3.0000i][3x2

double]3.由各元胞內(nèi)容創(chuàng)建-編址元胞元素內(nèi)涵的直接賦值法>>C{1,1}='This

is

the

third

Cell.';C{2,1}=magic(4)%生成2×1的元胞數(shù)組C

='This

is

the

third

Cell.'[4x4

double]2023/10/23.2.2

元胞數(shù)組的內(nèi)容顯示A{1,1}

=This

is

the

first

Cell.A{2,1}

=100010001A{1,2}

=1

23

4A{2,2}{1}

=TomA{2,2}{2}

=JaneC{2}

=16

2

3

135

11

10

89

7

6

124

14

15

1

在MATALB命令窗口中輸入元胞數(shù)組的名稱,并不直接顯示出元胞數(shù)組的各元胞元素的內(nèi)容值,而是顯示各元胞元素的數(shù)據(jù)類型和結(jié)構(gòu),單元素的元胞除外。1.使用celldisp命令顯示元胞數(shù)組的內(nèi)容>>

celldisp(A),

celldisp(C){}表示元胞數(shù)組的元胞元素內(nèi)27第4章字符串單元電子信息工程教研室容,A{2,2}{C1{}1表}=示第2行第2列的元胞元素T中hi存s

is放th的e

t元hir胞d

C數(shù)ell組.的第1個(gè)元胞元素的內(nèi)容2023/10/22.使用cellplot命令以圖形顯示元胞數(shù)組的內(nèi)容>>cellplot(A)28第4章字符串單元電子信息工程教研室2023/10/229第4章字符串單元電子信息工程教研室3.2.3

元胞數(shù)組的內(nèi)容獲取1.取元胞數(shù)組的元素內(nèi)容>>x1=A{1,2} %用花括號(hào)尋訪取A(1,2)元胞元素的內(nèi)容x1

=1

23

4>>x2=A{1,2}(2,2)x2

=4%取A(1,2)元胞元素的數(shù)組第二行第二列內(nèi)容注意:x1是數(shù)組,x2是標(biāo)量。2.取元胞數(shù)組的元素>>x3=A(1,2)x3

=[2x2

double]%用圓括號(hào)尋訪得到的是元胞2023/10/230第4章字符串單元電子信息工程教研室3.使用deal函數(shù)取多個(gè)元胞元素的內(nèi)容>>[x4,x5,x6]=deal(A{[2,3,4]})x4

=%單下標(biāo)尋址取A的三個(gè)元胞內(nèi)容100010001x5

=1234x6

='Tom''Jane'2023/10/231第4章字符串單元電子信息工程教研室【例3-4】元胞數(shù)組的基本應(yīng)用>>C=char('這是','元胞數(shù)組');>>R

=

reshape(

1:9,3,3

);>>S

=

sym(

'sin(-3*t)*exp(-t)'

);>>A(

1,1

)=

{

C};>>A{

2,1

}

=

S;%兩行的字符串?dāng)?shù)組%3×3

的數(shù)值數(shù)組%符號(hào)表達(dá)式%對(duì)元胞數(shù)組A

進(jìn)行賦值%注意{}和()的區(qū)別當(dāng)用圓括號(hào)來尋址時(shí),所表示的是元胞,相應(yīng)地等號(hào)右邊也應(yīng)該是一個(gè)元胞;當(dāng)用花括號(hào)來尋址時(shí),所表示的是元胞中的內(nèi)容,可以是任意類型、大小的數(shù)組。教研室2023/10/2

%顯示元胞數(shù)組>>A{

2,2

}

=

R;>>AA

=[2x4

char]

[][1x1

sym

] [3x3

double]A的元胞的元胞中的內(nèi)容電子信息工程>>

celldisp(

A

)A{1,1}

=這是元胞數(shù)組A{2,1}

=sin(-3*t)*exp(-t)A{1,2}

=[]A{2,2}

=考慮A{2,2}={R}的情況:>>

A{

2,2

}

=

{R}A

=[2x4char][1x1

sym

][]{1x1

cell}%顯示元胞數(shù)組A

>>celldisp(A)A{1,1}

=這是元胞數(shù)組A{2,1}

=sin(-3*t)*exp(-t)A{1,2}

=[]A{2,2}{1}

=1

4

72

5

83

6

9A{

2,2}

{1}(1,3)=71

4

72

5

83

6

932第4章字符串單元2023/10/233第4章字符串單元電子信息工程教研室%元胞的類型%元胞的內(nèi)容的類型>>

class(

A(2,1)

)ans

=cell>>

class(

A{2,1}

)ans

=sym>>

A(

2,1

)ans

=[1x1sym]>>

A{

2,1

}ans

=sin(-3*t)*exp(-t)>>

save

exm03_04.mat%A的第2行第1列的元胞%A

的第2行第1列的元胞中的內(nèi)容%保存內(nèi)存變量2023/10/23.2.4

元胞數(shù)組的擴(kuò)充、收縮和重組%載入數(shù)據(jù)文件%創(chuàng)建空的2×2

元胞數(shù)組[1.0000+

2.0000i]%將A,B

作為兩列排列得到2×4

的元胞數(shù)組'Another

cellarray'[3x7

char]【例3-5】元胞數(shù)組的擴(kuò)充、收縮和重組>>clear>>load

exm03_04>>B

=

cell(

2

);>>B{1,1}='Another

cellarray'; %對(duì)元胞數(shù)組進(jìn)行賦值>>B(:,2)={num2str(R);1+2i}%對(duì)第二列元胞賦值,注意前后大小一致B

='Another

cellarray' [3x7

char][]%元胞數(shù)組的重組>>

AB

=

[

A

B

]AB

=[2x4

char][1x1

sym

][][3x3

double][][1.0000+

2.0000i]34第4章字符串單元電子信息工程教研室2023/10/2%將A,B

作為兩行排>>

A_B

=

[

A

;

B

]A_B

=[2x4

char][1x1

sym

][][3x3

double][3x7

char

]

'Another

cell

array'[][1.0000+

2.0000i]>>cellplot(A_B,'legend') %元胞數(shù)列得到4*2

的元胞數(shù)組組的形象結(jié)構(gòu)圖%刪除元胞數(shù)組的第3

行[][1x1

sym

] [3x3

double][] [1.0000+

2.0000i]%元胞數(shù)組的收縮>>

A_B(

3,:

)

=

[]A_B

=[2x4

char]

>>

RA_B

=

reshape(

A_B,

2,3

)RA_B

=

%重新排列元胞數(shù)組的內(nèi)容,得到2×3

的元胞數(shù)組[2x4

char][1x1

sym

][] [3x3

double][] [1.0000+

2.0000i]35第4章字符串單元電子信息工程教研室2023/10/2%元胞數(shù)組內(nèi)容的獲取>>A_B(2,2)%取出A_B中的一個(gè)元胞ans

=[3x3

double]>>A_B{2,2}%取出該元胞的所有內(nèi)容

ans=1

4

72

5

83

6

9>>

A_B{

2,2

}

(

2,:

)%取出該元胞中第2行的所有元素ans

=2

5

8>>[a1,a2]=deal(A_B{[1,2]})%一次取出多個(gè)元胞,并逐個(gè)分配a1

=這是元胞數(shù)組a2

=sin(-3*t)*exp(-t)>>a3=A_B{2,2}(:,[1,3])%取出第2行第2列元胞內(nèi)容中的第1,3列a3

=1

72

83

9注意:花括號(hào)、圓括號(hào)和中括號(hào)在尋址時(shí)的不同含義36第4章字符串單元電子信息工程教研室2023/10/237第4章字符串單元電子信息工程教研室3.3

構(gòu)架數(shù)組(Structure

Array)特點(diǎn):構(gòu)架數(shù)組的基本組成是構(gòu)架(Structure),以下標(biāo)區(qū)分各個(gè)構(gòu)架;構(gòu)架必須劃分成“域”后才能使用,每一個(gè)構(gòu)架都包含多個(gè)域(Fields);構(gòu)架不能直接存放數(shù)據(jù),數(shù)據(jù)必須存放在構(gòu)架下面的“域”中;構(gòu)架的域可以存放任意類型、任意大小的數(shù)組(數(shù)值數(shù)組、字符串?dāng)?shù)組、符號(hào)對(duì)象、元胞等);不同構(gòu)架的同名域中可以存放不同類型的內(nèi)容;構(gòu)架數(shù)組可以是任意維的,可以利用單下標(biāo)或全下標(biāo)尋址。2023/10/23.3.1

構(gòu)架數(shù)組的創(chuàng)建1.直接創(chuàng)建法-直接對(duì)域賦值>>ps(1).name='曲線1';%構(gòu)架的域由(構(gòu)架名).(域名)標(biāo)識(shí)>>ps(1).color='red'

;>>ps(1).position=[0,0,300,300]

;>>ps(2).name='曲線2';>>ps(2).color='blue';>>ps(2).position=[100,100,300,300]

;

ps是構(gòu)架數(shù)組,ps(1)和ps(2)是構(gòu)架,

name、color和position是域。>>ps

%ps為1×2的構(gòu)架數(shù)組,有三個(gè)域ps

=1x2

struct

array

with

fields:namecolorposition%顯示構(gòu)架>>ps(1)ans

=name:'曲線1'color:'red'position:

[0

0

300

300]38第4章字符串單元電子信息工程教研室2023/10/239第4章字符串單元電子信息工程教研室2.利用struct函數(shù)創(chuàng)建>>ps(1)=struct(‘name’,‘曲線1','color','red','position',[0,0,300,300]);>>ps(2)=struct(‘name’,‘曲線2','color','blue','position',[100,100,300,300])ps

=1x2

struct

array

with

fields:namecolorposition2023/10/240第4章字符串單元電子信息工程教研室3.3.2

構(gòu)架數(shù)組數(shù)據(jù)的獲取和設(shè)置1.

直接獲?。カ@取一個(gè)構(gòu)架%獲取構(gòu)架ps(1)position域中第1行第3列的元素內(nèi)容>>x1=ps(1)x1

=name:'曲線1'color:

'red'position:

[0

0

300

300]>>x2=ps(1).positi

%獲取構(gòu)架ps(1)中一個(gè)域position的全部?jī)?nèi)容x2

=0

0

300

300>>

x3=

ps(1)

.position(1,3)x3

=3002023/10/241第4章字符串單元電子信息工程教研室2.用getfield獲取構(gòu)架數(shù)組的數(shù)據(jù)>>x4=getfield(ps,{1},'color')%獲取構(gòu)架ps(1)中一個(gè)域color的全部?jī)?nèi)容x4

=red>>

x5=getfield(ps,{1},

'color',{1})x5

=r%獲取構(gòu)架ps(1)color域中第一個(gè)元素的內(nèi)容3.用setfield設(shè)置構(gòu)架數(shù)組的數(shù)據(jù)>>ps=setfield(ps,{1},'color','green');%對(duì)ps(1)中color域的內(nèi)容進(jìn)行設(shè)置ps(1)ans

=name:'曲線1'color:

'green'position:

[0

0

300

300]2023/10/242第4章字符串單元電子信息工程教研室1.使用fieldnames獲取構(gòu)架數(shù)組的所有域>>x6=fieldnames(ps)x6

='name''color''position'2.獲取構(gòu)架數(shù)組域的數(shù)據(jù)使用“[]”合并相同域的數(shù)據(jù)并排成水平向量>>all_x=[]all_x

=曲線1曲線2使用cat將其變成多維數(shù)組>>cat(1,ps.position)%沿第一維排列

ans=0

0

300

300100

100

300

300>>cat(2,ps.position) %沿第二維排列

ans=0

0

300

300

100

100300

3003.3.3

構(gòu)架數(shù)組域的獲取2023/10/243第4章字符串單元電子信息工程教研室【例3-6】已知2輸入2輸出的LTI系統(tǒng)的傳遞函數(shù),利用表示該傳遞函數(shù)的構(gòu)架數(shù)組來練習(xí)構(gòu)架數(shù)組的基本操作。>>%1.

創(chuàng)建代表2輸入2輸出系統(tǒng)的傳遞函數(shù)的構(gòu)架數(shù)組>>clear>>num={3,2;[4

1],1}; %分子系數(shù)構(gòu)成的元胞數(shù)組>>den={[1,3,2],[1,1,1];[1

2

2

1],[1

0]}; %分母系數(shù)構(gòu)成的元胞數(shù)組%利用控制工具箱函數(shù)產(chǎn)生傳遞函數(shù)矩陣%將傳遞函數(shù)矩陣轉(zhuǎn)換成構(gòu)架數(shù)組>>ss

=

tf(

num

,

den

);>>SST

=

struct(

ss

)SST

=num:

{2x2cell}den:

{2x2cell}Variable:

's'lti:

[1x1lti]2023/10/2>>%2.

獲取構(gòu)架數(shù)組的域名>>FN

=

fieldnames(

SST

)%獲取域名,以元胞數(shù)組的形式保存FN

='num''den''Variable''lti'>>

class(

FN

)ans

=Cell>>%3.

獲取構(gòu)架數(shù)組域中的內(nèi)容[1x3

double][1x4

double][1x3

double][1x2

double]>>ff=SST.den

%獲取SST的den域中的所有內(nèi)容,為2×2的元胞數(shù)組ff

=

>>ff{2,1}%獲取ff中第2行第1列中內(nèi)容,相當(dāng)于SST.den{2,1}ans

=1

2

2

1>>poly2str(ff{2,1},'s')%以易讀形式顯示多項(xiàng)式ans

=s^3

+

2

s^2

+

2

s

+

144第4章字符串單元電子信息工程教研室2023/10/245第4章字符串單元電子信息工程教研室>>%4.

賦值操作>>SST.num{

2,1

}ans

=0

0

4

1>>SST.num{

2,1

}

=

[

1

3

1

];行第1列的元胞內(nèi)容進(jìn)行修改>>

SST.num{

2,1

}ans

=1

3

1%對(duì)SST

的num

域中第2電子信息工程教研室2023/10/2>>%5.

構(gòu)架數(shù)組的擴(kuò)充>>size(SST) %SST為單構(gòu)架數(shù)組ans

=1

1>>

SST(

2,2

)

=

struct(

tf(1,[1%將SST

擴(kuò)充為2×2的1])

)構(gòu)架數(shù)組SST

=2x2

struct

array

with

fields:numdenVariablelti>>size(SST)ans

=

246

2%將SST

構(gòu)>>%6.

構(gòu)架數(shù)組的收縮>>SST(

1,:

)

=

[]架數(shù)組的第1行刪除SST

=1x2

struct

array

with

fields:numdenVariablelti>>size(SST)ans

=1

2第4章字符串單元電子信息工程教研室2023/10/2num:

{2x2

cell}den:

{2x2

cell}Variable:

's'lti:

[1x1

lti](1,1)num:

{2x2

cell}den:

{2x2

cell}Variable:

's'lti:

[1x1

lti](1,2)num:

[]den:

[]Variable:

[]lti:

[](2,1)num:

[]den:

[]Variable:

[]lti:

[](2,2)num:

{[0

1]}den:

{[1

1}Variable:

's'lti:

[1x1

lti]擴(kuò)充(1,1)num:

[]den:

[]Variable:

[]lti:

[](1,2)num:

{[0

1]}den:

{[1

1}Variable:

's'lti:

[1x1

lti]收縮構(gòu)架數(shù)組擴(kuò)充、收縮示意圖47第4章字符串單元電子信息工程教研室2023/10/2%取出SST構(gòu)架數(shù)組第1行第2列的構(gòu)架的num

域%取出SST構(gòu)架數(shù)組第1行第2列的構(gòu)架的den

域%利用系統(tǒng)函數(shù)打印函數(shù)顯示SST

的第1行第%取出SST構(gòu)架數(shù)組第1行第2列的構(gòu)架的num

域的內(nèi)%取出SST構(gòu)架數(shù)組第1行第2列的構(gòu)架的den

域的內(nèi)容>>%7.構(gòu)架數(shù)組內(nèi)容的調(diào)取>>Snum=SST(1,2).numSnum

=[1x2

double]>>Sden=SST(1,2).denSden

=[1x2

double]>>printsys

溫馨提示

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

評(píng)論

0/150

提交評(píng)論