資源描述:
《matlab使用單元數(shù)組和結(jié)構(gòu)數(shù)組》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Matlab使用單元數(shù)組(cellarray)和結(jié)構(gòu)數(shù)組(structarray)要在MALTAB中實現(xiàn)比較復(fù)雜的編程,就不能不用單元數(shù)組(cellarray)和結(jié)構(gòu)數(shù)組(structarray)。而且在Matlab中實現(xiàn)struct比C中更為方便。一.單元數(shù)組單元數(shù)組中的每一個元素稱為單元(cell).單元可以包含任何類型的matlab數(shù)據(jù),這些數(shù)據(jù)類型包括數(shù)值數(shù)組,字符,符號對象,甚至其他的單元數(shù)組和結(jié)構(gòu)體.不同的單元可以包含不同的數(shù)據(jù).1.1單元數(shù)組創(chuàng)建與顯示:1、直接賦值法:按單元索引法和按內(nèi)容索引法。(其實也就是將花括號放在等式的右邊或是左邊的區(qū)別)。注意:“按單元索引法
2、”和“按內(nèi)容索引法”是完全等效的,可以互換使用。通過下面實例,我們看到:花括號{}用于訪問單元的值,而括號()用于標(biāo)識單元(即:不用于訪問單元的值)。具體理解{}和()區(qū)別可以在下面代碼最后分別輸入A{2,2}和A(2,2)。就會發(fā)現(xiàn)“按內(nèi)容索引法{}”能顯示完整的單元內(nèi)容,而“按單元索引法()”有時無法顯示完整的單元內(nèi)容。>>A(1,1)={[123;456;789]};?????????%按單元索引法>>A(1,2)={2+3i};>>A(2,1)={'Acharacter'};>>A(2,2)={12:-2:0};>>A?????????????????????????%要想
3、詳細顯示A中的內(nèi)容,可用指令:celldisp(A)A=????[3x3double]???[2.0000+3.0000i]???'Acharacter'?????????[1x7double]>>B{1,1}=[123;456;789];???????%按內(nèi)容索引法。>>B{1,2}=2+3i;>>B{2,1}='Acharacter';>>B{2,2}=12:-2:0;>>BB=????[3x3double]???[2.0000+3.0000i]???'Acharacter'?????????[1x7double]2、利用cell函數(shù)法:即首先用cell函數(shù)生成一個空的單元數(shù)組
4、,然后再向其中添加所需的數(shù)據(jù)。下面的代碼生成一個2X3的空單元數(shù)組:>>C=cell(2,3)C=????[]????[]????[]????[]????[]????[]利用cell生成空單元數(shù)組后,可以采用“按單元索引法”和“按內(nèi)容索引法”對其進行賦值。在賦值時,用戶一定要注意{}和()的用法。>>C(1,1)={'Thisdoeswork'}C=???'Thisdoeswork'????[]????[]?????????????????[]????[]????[]>>C{2,3}='Thiswork'C=???'Thisdoeswork'????[]????????????[]
5、?????????????????[]????[]???'Thiswork'(1)利用cell指令創(chuàng)建單元數(shù)組C=cell(2);%預(yù)設(shè)空單元數(shù)組C(:,1)={char('Another','textstring');10:-1:1}%對第一列單元賦值C=[2x11char][][1x10double][](2)單元數(shù)組的“列”擴充和“行”擴充AC=[AC]%空格(或逗號)利用來分隔列A_C=[A;C]%分號利用來分隔“行”AC=[2x10char][3x3double][2x11char][][1.0000+2.0000i][1x1sym][1x10double][]A_C=[
6、2x10char][3x3double][1.0000+2.0000i][1x1sym][2x11char][][1x10double][]【例】cellplot能用圖形形象化地表示單元數(shù)組的內(nèi)容。(A_C取自上例)cellplot(A_C,'legend')單元數(shù)組的收縮A_C(3,:)=[]%刪除第3行,使A_C成為的單元數(shù)組A_C=[2x10char][3x3double][1.0000+2.0000i][1x1sym][1x10double][]把A_C重組成單元數(shù)組R_A_CR_A_C=reshape(A_C,2,3)R_A_C=[2x10char][1x10double
7、][1x1sym][1.0000+2.0000i][3x3double][]1.2單元數(shù)組內(nèi)容的調(diào)取取一個單元f1=R_A_C(1,3)%使用園括號尋訪得到的是單元,而不僅是內(nèi)容。class(f1)f1=[1x1sym]ans=cell取一個單元的內(nèi)容f2=R_A_C{1,3}%用花括號尋訪取得內(nèi)容class(f2)f2=sin(-3*t)*exp(-t)ans=sym取單元內(nèi)的子數(shù)組f3=R_A_C{1,1}(:,[1256])%注意三種括號的不同用途%取第1行第1