资源描述:
《matlab使用单元数组和结构数组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Matlab使用单元数组(cellarray)和结构数组(structarray)要在MALTAB中实现比较复杂的编程,就不能不用单元数组(cellarray)和结构数组(structarray)。而且在Matlab中实现struct比C中更为方便。一.单元数组单元数组中的每一个元素称为单元(cell).单元可以包含任何类型的matlab数据,这些数据类型包括数值数组,字符,符号对象,甚至其他的单元数组和结构体.不同的单元可以包含不同的数据.1.1单元数组创建与显示:1、直接赋值法:按单元索引法和按内容索引法。(其实也就是将花括号放在等式的右边或是左边的区别)。注意:“按单元索引法
2、”和“按内容索引法”是完全等效的,可以互换使用。通过下面实例,我们看到:花括号{}用于访问单元的值,而括号()用于标识单元(即:不用于访问单元的值)。具体理解{}和()区别可以在下面代码最后分别输入A{2,2}和A(2,2)。就会发现“按内容索引法{}”能显示完整的单元内容,而“按单元索引法()”有时无法显示完整的单元内容。>>A(1,1)={[123;456;789]}; %按单元索引法>>A(1,2)={2+3i};>>A(2,1)={'Acharacter'};>>A(2,2)={12:-2:0};>>A %要想
3、详细显示A中的内容,可用指令:celldisp(A)A= [3x3double] [2.0000+3.0000i] 'Acharacter' [1x7double]>>B{1,1}=[123;456;789]; %按内容索引法。>>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函数法:即首先用cell函数生成一个空的单元数组
4、,然后再向其中添加所需的数据。下面的代码生成一个2X3的空单元数组:>>C=cell(2,3)C= [] [] [] [] [] []利用cell生成空单元数组后,可以采用“按单元索引法”和“按内容索引法”对其进行赋值。在赋值时,用户一定要注意{}和()的用法。>>C(1,1)={'Thisdoeswork'}C= 'Thisdoeswork' [] [] [] [] []>>C{2,3}='Thiswork'C= 'Thisdoeswork' [] []
5、 [] [] 'Thiswork'(1)利用cell指令创建单元数组C=cell(2);%预设空单元数组C(:,1)={char('Another','textstring');10:-1:1}%对第一列单元赋值C=[2x11char][][1x10double][](2)单元数组的“列”扩充和“行”扩充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能用图形形象化地表示单元数组的内容。(A_C取自上例)cellplot(A_C,'legend')单元数组的收缩A_C(3,:)=[]%删除第3行,使A_C成为的单元数组A_C=[2x10char][3x3double][1.0000+2.0000i][1x1sym][1x10double][]把A_C重组成单元数组R_A_CR_A_C=reshape(A_C,2,3)R_A_C=[2x10char][1x10double
7、][1x1sym][1.0000+2.0000i][3x3double][]1.2单元数组内容的调取取一个单元f1=R_A_C(1,3)%使用园括号寻访得到的是单元,而不仅是内容。class(f1)f1=[1x1sym]ans=cell取一个单元的内容f2=R_A_C{1,3}%用花括号寻访取得内容class(f2)f2=sin(-3*t)*exp(-t)ans=sym取单元内的子数组f3=R_A_C{1,1}(:,[1256])%注意三种括号的不同用途%取第1行第1