通信系統(tǒng)中的軟件仿真3_第1頁(yè)
通信系統(tǒng)中的軟件仿真3_第2頁(yè)
通信系統(tǒng)中的軟件仿真3_第3頁(yè)
通信系統(tǒng)中的軟件仿真3_第4頁(yè)
通信系統(tǒng)中的軟件仿真3_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第三講字符串、單元數(shù)組和結(jié)構(gòu)數(shù)組1數(shù)組類型基本組分組分內(nèi)涵基本組分占用字節(jié)數(shù)數(shù)值數(shù)組元素雙精度實(shí)數(shù)標(biāo)量或雙精度復(fù)數(shù)標(biāo)量816字符串元素字符2單元數(shù)組單元可以存放任何類型、任何大小的數(shù)據(jù)。不定結(jié)構(gòu)數(shù)組結(jié)構(gòu)只有掛接在結(jié)構(gòu)上的“域”才能存放數(shù)據(jù)。數(shù)據(jù)可以是任何類型、任何大小。不定2字符串?dāng)?shù)組單元數(shù)組結(jié)構(gòu)數(shù)組稀疏矩陣關(guān)于數(shù)據(jù)類型的歸納性說(shuō)明3字符串?dāng)?shù)組字符串?dāng)?shù)組簡(jiǎn)稱串?dāng)?shù)組。字符串?dāng)?shù)組的作用:沒有串?dāng)?shù)組及相應(yīng)的操作,那么數(shù)據(jù)可視化、圖形用戶界面GUI的制作將會(huì)遇到困難,構(gòu)作MATLAB的宏指令也將會(huì)遇到困難。字符變量的創(chuàng)建方式:在指令窗中,先把待建的字符放在“單引號(hào)對(duì)”中,再按Enter鍵。注意: “單

2、引號(hào)對(duì)”必須在英文狀態(tài)下輸入,其作用是MATLAB識(shí)別送來(lái)內(nèi)容“身份”(是變量名、數(shù)字,還是字符串)所必需的,字符串是以ASCII形式存儲(chǔ)的。數(shù)字標(biāo)量在內(nèi)存中存放時(shí)需要8個(gè)字節(jié)(Byte),而一個(gè)字符的存放只需2個(gè)字節(jié)。4串?dāng)?shù)組的屬性和標(biāo)識(shí) 復(fù)雜串?dāng)?shù)組的創(chuàng)建串轉(zhuǎn)換函數(shù) 串操作函數(shù) 5串?dāng)?shù)組的屬性和標(biāo)識(shí)演示:串的基本屬性、標(biāo)識(shí)和簡(jiǎn)單操作。創(chuàng)建串?dāng)?shù)組串?dāng)?shù)組的大小串?dāng)?shù)組的元素標(biāo)識(shí)串?dāng)?shù)組的ASCII碼對(duì)字符串ASCII碼數(shù)組的操作中文字符串?dāng)?shù)組創(chuàng)建帶單引號(hào)的字符串由小串構(gòu)成長(zhǎng)串 6【例1】本例演示:串的基本屬性、標(biāo)識(shí)和簡(jiǎn)單操作。(1)創(chuàng)建串?dāng)?shù)組a=This is an example. a =This

3、 is an example. (2)串?dāng)?shù)組a的大小size(a) ans = 1 19 (3)串?dāng)?shù)組的元素標(biāo)識(shí)a14=a(1:4) %提出一個(gè)子字符串ra=a(end:-1:1) %字符串的倒排a14 =Thisra =.elpmaxe na si sihT 7(4)串?dāng)?shù)組的ASCII碼ascii_a=double(a) %產(chǎn)生ASCII碼ascii_a = Columns 1 through 19 84 104 105 115 32 105 115 32 97 110 32 101 120 97 109 112 108 101 46 char(ascii_a)%把ASCII碼變回字符串 a

4、ns =This is an example. (5)對(duì)字符串ASCII碼數(shù)組的操作w=find(a=a&a=z); %找出串?dāng)?shù)組a中,小寫字母的元素位置ascii_a(w)=ascii_a(w)-32;%大小寫字母ASCII值差32,用數(shù)值加法改變部分碼值char(ascii_a) %把新的ASCII碼翻成字符ans =THIS IS AN EXAMPLE. 8復(fù)雜串?dāng)?shù)組的創(chuàng)建多行串?dāng)?shù)組的直接創(chuàng)建利用串操作函數(shù)創(chuàng)建多行串?dāng)?shù)組 轉(zhuǎn)換函數(shù)產(chǎn)生數(shù)碼字符串 9多行串?dāng)?shù)組的直接創(chuàng)建在直接創(chuàng)建多行串?dāng)?shù)組時(shí),關(guān)鍵是要保證同一串?dāng)?shù)組的各行字符數(shù)要相等,即保證各行等長(zhǎng)。為此,有時(shí)不得不通過(guò)空格符的增減來(lái)調(diào)節(jié)各

5、行的長(zhǎng)度,使它們彼此相等。例: S=This string array has multiple rows.增加一空格使兩行長(zhǎng)度相等10利用串操作函數(shù)創(chuàng)建多行串?dāng)?shù)組用專門函數(shù)char , str2mat , strvcat創(chuàng)建多行串?dāng)?shù)組示例。Char: 創(chuàng)建字符傳輸組或?qū)⑵渌愋妥兞哭D(zhuǎn)化為字符串?dāng)?shù)組str2mat :將字符串轉(zhuǎn)換為含有空格的數(shù)組Strvcat:創(chuàng)建字符串?dāng)?shù)組這三個(gè)函數(shù)創(chuàng)建多行數(shù)組時(shí),不必?fù)?dān)心每行字符數(shù)是否相等。它們總會(huì)按最長(zhǎng)行設(shè)置第二維的長(zhǎng)度,其他行的尾部用空格填充。11轉(zhuǎn)換函數(shù)產(chǎn)生數(shù)碼字符串最常用的數(shù)組/字符串轉(zhuǎn)換函數(shù)int2str , num2str , mat2str 示

6、例。int2str :將整數(shù)轉(zhuǎn)換為字符串num2str :把數(shù)值轉(zhuǎn)換為字符串mat2str:將數(shù)組轉(zhuǎn)換為字符串12串轉(zhuǎn)換函數(shù)指 令含 義指 令含 義abs把串翻譯成ASCII碼hex2dec16-進(jìn)制串轉(zhuǎn)換為十進(jìn)制整數(shù)base2decX-進(jìn)制串轉(zhuǎn)換為十進(jìn)制整數(shù)hex2num16-進(jìn)制串轉(zhuǎn)換為浮點(diǎn)數(shù)bin2dec二進(jìn)制串轉(zhuǎn)換為十進(jìn)制整數(shù)int2str把整數(shù)轉(zhuǎn)換為串char把ASCII碼及其他非數(shù)值類數(shù)據(jù)轉(zhuǎn)換成字符串mat2str把數(shù)值矩陣轉(zhuǎn)換為eval可調(diào)用的格式dec2base十進(jìn)制整數(shù)轉(zhuǎn)換為X進(jìn)制串num2str把數(shù)值轉(zhuǎn)換為串dec2bin十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制串setstr把ASCII碼翻

7、譯成串dec2hex十進(jìn)制整數(shù)轉(zhuǎn)換為十六進(jìn)制串sprintf以控制格式把數(shù)值轉(zhuǎn)換為串double把任何類型數(shù)據(jù)轉(zhuǎn)換成雙精度數(shù)值sscanf在控制格式下把串轉(zhuǎn)換為數(shù)值fprintf把格式化數(shù)據(jù)寫到文件或屏幕str2num把串轉(zhuǎn)換為數(shù)值13串操作函數(shù)(一)指 令含 義blanks(n)創(chuàng)建n個(gè)空格串char(s1,s2,)把串s1,s2等逐個(gè)寫成行,形成多行數(shù)組deblank(s)刪去串尾部的空格符eval(s)把串s當(dāng)作MATLAB指令運(yùn)行eval(s1,sc)把串s1當(dāng)作MATLAB指令運(yùn)行。若s1運(yùn)行發(fā)生錯(cuò)誤,則運(yùn)行scfeval(f,x,y,)對(duì)輸入宗量x,y等計(jì)算函數(shù)ffindstr(s

8、1,s2)在較長(zhǎng)串中,找出短串的起始字符的下標(biāo)ischar(s)s是字符串則判“真”給出邏輯1isletter(s)以邏輯1指示s里文字符的位置isspace(s)以邏輯1指示s里空格符的位置lasterrMATLAB發(fā)出的最新錯(cuò)誤信息14串操作函數(shù)(二)指 令含 義lower(s)使s里的英文字母全部小寫str2mat(s1,s2,)把串s1,s2等逐個(gè)寫成行,形成多行數(shù)組,并刪出全空行strcat(s1,s2,)把串s1,s2等連接成長(zhǎng)串strcmp(s1,s2)若串s1,s2相同,則判“真”給出邏輯1strjust(s)字符串的對(duì)齊方式:或右對(duì)齊,或左對(duì)齊,或?qū)χ衧trmatch(s1,

9、s2)逐行搜索串s2 ,給出以s1開頭的那些行的行號(hào)strncmp(s1,s2,n)若串s1,s2的前n個(gè)字符相同,則判“真”給出邏輯1strrep(s1,s2,s3)串s1中的所有出現(xiàn)s2的地方替換為s3strtok(s)找出第一個(gè)間隔符(空格、制表位、回車符)前的內(nèi)容strvcat(s1,s2,)把串s1,s2等逐個(gè)寫成行,形成多行數(shù)組upper(s)使s里的英文字母全部大寫15與字符串有關(guān)的另一個(gè)重要函數(shù)是eval,其調(diào)用格式為: eval(t)其中t為字符串。它的作用是把字符串的內(nèi)容作為對(duì)應(yīng)的MATLAB語(yǔ)句來(lái)執(zhí)行。例如,t=pi;m= t,sin(t),cos(t) ;y=eval(

10、m)y = 3.1416 0.0000 -1.0000綜合例題:在MATLAB計(jì)算生成的圖形上標(biāo)出圖名和最大值點(diǎn)坐標(biāo)。 16單元數(shù)組(Cell Array) 單元數(shù)組的基本組分(Element)是單元(Cell )(抽屜)。每個(gè)單元本身在數(shù)組中是平等的,它們只能以下標(biāo)區(qū)分。單元可以存放任何類型、任何大小的數(shù)組(如任意維數(shù)值數(shù)組、字符串?dāng)?shù)組、符號(hào)對(duì)象等)。而且,同一個(gè)單元數(shù)組中各單元中的內(nèi)容可以不同。單元數(shù)組的維數(shù)不受限制;單元數(shù)組對(duì)單元的編址方法也有單下標(biāo)編址和全下標(biāo)編址兩種。17單元標(biāo)識(shí)尋訪和內(nèi)容編址尋訪的不同對(duì)單元數(shù)組來(lái)說(shuō),單元和單元里的內(nèi)容是兩個(gè)不同范疇的東西。因此,尋訪單元和尋訪單元中

11、的內(nèi)容是兩種不同的操作。為此,MATLAB設(shè)計(jì)了兩種不同的操作:?jiǎn)卧鈽?biāo)識(shí)(Cell Indexing)單元內(nèi)編址(Content Addressing)例:A(2,3):是指A單元數(shù)組中的第2行第3列單元元素;A2,3:是指A單元數(shù)組第2行第3列單元中所允許存或取的內(nèi)容;注意:兩者的區(qū)別僅在于所用的括號(hào)不同。“外標(biāo)識(shí)的單元元素”用的是“圓括號(hào)”“內(nèi)編址單元元素內(nèi)涵”用的是“花括號(hào)”18單元數(shù)組的創(chuàng)建外標(biāo)識(shí)單元元素賦值法編址單元元素內(nèi)涵的直接賦值法 直接使用花括號(hào)將所有元素內(nèi)容一次設(shè)定完成19單元數(shù)組的擴(kuò)充單元數(shù)組的擴(kuò)充 利用cell指令創(chuàng)建單元數(shù)組單元數(shù)組的“列”擴(kuò)充和“行”擴(kuò)充單元數(shù)組的內(nèi)

12、容顯示cellplot能用圖形形象化地表示單元數(shù)組的內(nèi)容。celldisp顯示單元數(shù)組的全部或部分內(nèi)容單元內(nèi)編址(Content Addressing)方式也可顯示單元數(shù)組的全部或部分內(nèi)容20結(jié)構(gòu)數(shù)組(Structure Array) 結(jié)構(gòu)數(shù)組:與單元數(shù)組一樣,也能在一個(gè)數(shù)組里存放各類數(shù)據(jù)。從一定意義上講,結(jié)構(gòu)(構(gòu)架)數(shù)組組織數(shù)據(jù)的能力比元胞數(shù)組更強(qiáng)、更富于變化。結(jié)構(gòu)數(shù)組的基本組分是結(jié)構(gòu)(Structure)。數(shù)組中的每個(gè)結(jié)構(gòu)是平等的,它們以下標(biāo)區(qū)分。結(jié)構(gòu)必須在劃分域(Fields,字段)后才能使用。數(shù)據(jù)不能直接存放于結(jié)構(gòu),而只能存放在域(字段)中。結(jié)構(gòu)的域(字段)可存放任何類型、任何大小的數(shù)

13、組(如任意維數(shù)值數(shù)組、字符串?dāng)?shù)組、符號(hào)對(duì)象等)。而且,不同結(jié)構(gòu)的同名域(字段)中存放的內(nèi)容可以不同。結(jié)構(gòu)數(shù)組的維數(shù)不受限制。結(jié)構(gòu)數(shù)組對(duì)結(jié)構(gòu)的編址方法也有單下標(biāo)編址和全下標(biāo)編址兩種。21結(jié)構(gòu)數(shù)組與單元數(shù)組的異同比較22結(jié)構(gòu)矩陣的元素可以是不同的數(shù)據(jù)類型,它能將一組具有不同屬性的數(shù)據(jù)納入到一個(gè)統(tǒng)一的變量名下進(jìn)行管理。建立一個(gè)結(jié)構(gòu)矩陣可采用給結(jié)構(gòu)成員賦值的辦法。具體格式為結(jié)構(gòu)矩陣名.成員名=表達(dá)式 其中表達(dá)式應(yīng)理解為矩陣表達(dá)式。例如,建立一個(gè)含有3個(gè)元素的結(jié)構(gòu)矩陣a:a(1).x1=10;a(1).x2=liu;a(1).x3=11,21;34,78;a(2).x1=12;a(2).x2=wang;

14、a(2).x3=34,191;27,578;a(3).x1=14;a(3).x2=cai;a(3).x3=13,890;67,231;結(jié)構(gòu)矩陣的建立與引用23注意:結(jié)構(gòu)矩陣元素的成員也可以是結(jié)構(gòu)數(shù)據(jù)。引用結(jié)構(gòu)矩陣元素的成員時(shí),顯示其值;引用結(jié)構(gòu)矩陣元素時(shí),顯示成員名和它的值,但成員是矩陣時(shí),不顯示具體內(nèi)容,只顯示成員矩陣大小參數(shù);引用結(jié)構(gòu)矩陣時(shí),只顯示結(jié)構(gòu)矩陣大小參數(shù)和成員名。 24結(jié)構(gòu)成員的修改可以根據(jù)需要增加或刪除結(jié)構(gòu)的成員。例如要給結(jié)構(gòu)矩陣a增加一個(gè)成員x4,可給a中任意一個(gè)元素增加成員x4:a(1).x4=410075;但其他成員均為空矩陣,可以使用賦值語(yǔ)句給它賦確定的值。要?jiǎng)h除結(jié)構(gòu)的

15、成員,則可以使用rmfield函數(shù)來(lái)完成。例如,刪除成員x4:a=rmfield(a, x4);25稀疏矩陣稀疏矩陣(Sparse Matrix):一個(gè)矩陣中包含很多零元素。(只有很少數(shù)的非零元素,一般只占矩陣總數(shù)的1%左右)為避免對(duì)計(jì)算機(jī)資源的浪費(fèi),一般只存儲(chǔ)非零元素及與之相配的行號(hào)、列號(hào)。稀疏矩陣在工程上的用途相當(dāng)廣泛,例如電路、圖學(xué)、有限元素法及偏微分方程等。26稀疏矩陣的創(chuàng)建稀疏矩陣的儲(chǔ)存空間稀疏矩陣的觀看與圖標(biāo)稀疏矩陣的運(yùn)算27稀疏矩陣的創(chuàng)建根據(jù)儲(chǔ)存方式的不同,MATLAB的矩陣可分為兩種:完全矩陣(Full Matrix):每一個(gè)元素都存為double的數(shù)據(jù)類型,一個(gè)mn的完全矩陣

16、所占用的內(nèi)存空間是8mn個(gè)字節(jié)(Byte)。稀疏矩陣(Sparse Matrix):由于大部分的元素都是0,只須儲(chǔ)存“非零元素的位置”及其“元素值”即可。28使用sparse命令直接創(chuàng)建稀疏矩陣:格式:S=sparse(i,j,s,m,n)其中是i行索引,j是列索引,s是非零元素所形成的向量,m是s的列維數(shù),n是s的行維數(shù)。使用spdiags命令可由對(duì)角線元素來(lái)構(gòu)建一個(gè)稀疏矩陣:格式:S=spdiags(D,p,m,n)其中D的每一個(gè)列代表矩陣的對(duì)角線向量,p代表對(duì)角線的位置(0代表主對(duì)角線,-1代表向下位移一單位的次對(duì)角線,1代表向上位移一單位的次對(duì)角線,依此類推),m與n則分別代表矩陣的行

17、維數(shù)與列維數(shù)。29稀疏矩陣的儲(chǔ)存空間對(duì)于一個(gè)只包含實(shí)數(shù)的稀疏矩陣,假設(shè)其維數(shù)為mn,含有nnz個(gè)非零元素,MATLAB動(dòng)用了三個(gè)內(nèi)部數(shù)組來(lái)儲(chǔ)存此稀疏矩陣的相關(guān)信息:第一個(gè)數(shù)組:以double方式儲(chǔ)存了所有的非零元素,其長(zhǎng)度為nnz,使用的空間大小為8nnz字節(jié)(Bytes);第二個(gè)數(shù)組:以整數(shù)方式儲(chǔ)存了每個(gè)元素的行索引,其長(zhǎng)度為nnz,使用的空間大小為4nnz字節(jié)(Bytes) ;第三個(gè)數(shù)組:以整數(shù)方式儲(chǔ)存了列的起始指針,其長(zhǎng)度為n,使用的空間大小為4n字節(jié)(Bytes) ;整個(gè)稀疏矩陣占用的空間大小為8nnz+4nnz+4n+4=12nnz+4n+430稀疏矩陣的觀看與圖標(biāo)使用spy命令可觀

18、看稀疏矩陣的非零元素分布情況。稀疏矩陣表示一個(gè)“無(wú)向圖”的“鄰近矩陣”31稀疏矩陣的運(yùn)算完全矩陣的運(yùn)算與函數(shù)也都適用于稀疏矩陣。由于稀疏矩陣的存儲(chǔ)空間變小,而且MATLAB專門開發(fā)了針對(duì)它的算法,因此對(duì)稀疏矩陣的運(yùn)算非???。(見示例)稀疏矩陣的運(yùn)算還包括下列幾種:排列及重排因子分解線性聯(lián)立方程式的求解特征值及奇異值的計(jì)算32【例3.4】綜合例題:在MATLAB計(jì)算生成的圖形上標(biāo)出圖名和最大值點(diǎn)坐標(biāo)。cleara=2;%設(shè)置衰減系數(shù)w=3; %設(shè)置振蕩頻率t=0:0.01:10;%取自變量采樣數(shù)組y=exp(-a*t).*sin(w*t);%計(jì)算函數(shù)值、產(chǎn)生函數(shù)數(shù)組y_max,i_max=max(y); %找最大值元素位置t_text=t=,num2str(t(i_max);%生成最大值點(diǎn)的橫坐標(biāo)字符串y_text=y=,num2str(y_max);%生成最大值點(diǎn)的縱坐標(biāo)字符串max_text=char(maximum,t_text,y_text);%生成標(biāo)志最大值點(diǎn)的字符串tit=y=exp(-,num2str(a),t)*sin(,num2str(w),t);%plot(t,zeros(size(t),k)%畫縱坐標(biāo)為0的基準(zhǔn)線hold on%保持繪制的線不被清除plot(t,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論