nullnull字符串数组(Character String Array) 字符串数组的属性和标识 复杂字符串数组的创建 串转换函数和串操作函数元胞数组 (Cell Array) 元胞数组的创建元胞数组的
显示元胞数组的内容获取 元胞数组的扩充、收缩和重组 构架数组(Structure Array)构架数组的创建 构架数组数据的获取和设置 构架数组域的获取数据类型归纳三、字符串\元胞\构架数组null3.1 字符串数组(Character String Array) 【例3-1】字符串入门 >>String1='b';
>>String2='This is an example!'; % 英文字母、空格、数字、标点、中文字符
>>String3='例子''char array'''; %都是占一个元素位,两个字节
>>s1=class(String1)
s1 =
char>>s2=size(String2)
s2 =
1 19>> whos
Name Size Bytes Class
String1 1x1 2 char array
String2 1x19 38 char array
String3 1x14 28 char array
s1 1x4 8 char array
s2 1x2 16 double array
Grand total is 40 elements using 92 bytes 在MATLAB中,字符串是作为字符数组来引入的;
一个字符串由多个字符组成,用单引号('')来界定;
字符串是按行向量进行存储的,每一字符(包括空格)是以其ASCII码的形式存放.。 null3.1.1 字符串数组的属性和标识 1. 创建串数组 必须将待建字符放在“单引号对”中,当串中本身包含单引号时,每个单引号符用“连续的两个单引号”表示。2. 串数组的大小 size指令可获得串数组的大小。串中的每一个字符,包括中英文字符、空格、标点都算一个元素。3. 串数组的元素标识按从左至右的顺序依次用1、2、3、4…等标识元素在串中的位置。4. 串数组的ASCII码 指令abs和double可以显示串数组对应的ASCII码数值数组,指令char则可把ASCII码数值数组转换成串数组。5. 字符串ASCII码数组的操作 可以对ASCII码数组进行数值数组的各种运算。但其结果就变成一般数值向量的运算,而不再是字符串的运算。注意:
必须在英文状态下输入“单引号对”。
将多个字符串变量直接用“,”连接,可构成一个较长的新字符串变量。 null【例3-2】串数组基本操作>> string='this is an example!' %输入字符串string
string =
this is an example!>> s_1=string(end:-1:1) %倒序排列string得到s_1
s_1 =
!elpmaxe na si siht>> s_2=string(end:-2:1) %倒序排列string且每隔一个字符取一个元素得到s_2
s_2 =
!lmx as it>> w=string>='a'&string<='z' %找出所有小写英文字符,用逻辑数组表示
w =
Columns 1 through 12
1 1 1 1 0 1 1 0 1 1 0 1
Columns 13 through 19
1 1 1 1 1 1 0>> STRING=string; %定义新串STRING,其内容与string相同
>> STRING(w)=char(string(w)-32)%将小写字符转换成大写字符(ASCII码相差32)
STRING =
THIS IS AN EXAMPLE!>> Str=['Exm03_2.m',string(5:end)] %构造新的字符串Str
Str =
Exm03_2.m is an example!null3.1.2 复杂字符串数组的创建 1. 多行串数组的直接创建必须保证各行等长,可以利用增减“空格”来实现。>> s=['Hello, ' %6个字符
'Nice to meet you! '] %17个字符
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.>> s=['Hello,',' '*ones(1,11) %补充11个空格
'Nice to meet you!']
s =
Hello,
Nice to meet you!>>size(s)
ans =
2 17 2. 利用串操作函数创建多行串数组 利用专门的str2mat、strvcat和char函数可以构造出字符串数组,而不必考虑每行的字符数是否相等,总是按最长的设置,不足的末尾用空格补齐。>> s=char('Hello,', 'Nice to meet you!');
>> s=str2mat('Hello,', 'Nice to meet you!');
>> s=strvcat('Hello,', 'Nice to meet you!');s =
Hello,
Nice to meet you!null>> 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 17
s_s1 =
3 17
s_s2 =
2 17s1 = s2 =
Hello, Hello,
Nice to meet you!
Nice to meet you! 区别:
str2mat认为空串代表空行;
strvcat省略空串。3. 利用串转换函数产生数码字符串 常用的数组/字符串转换函数有int2str , num2str , mat2str 。
int2str:把整数数组转换成字符串数组,非整数将被四舍五入后再转换;
num2str :把非整数数组转换成字符串数组,常用于图形中数据点的标识;
mat2str:把数值数组转换成字符串数组。 >> a=[0.9576 0.8 2.151;4.0 5 7.8]; %2×3数值数组
>> a1=int2str(a) ; %取整数
>> a2=num2str(a,2); %保持2位有效数字,转换为串
>> a3=mat2str(a,2); %保持2位有效数字,转换为一行串
>>a,a1,a2,a3null%清除内存变量
%时间 t 从 0 到 10 每隔 0.01 均匀采样
%对应每一个 t 求 y 值
%求最大值 y_max 及其下标 i_max
%生成最大值点的横坐标字符串
%生成最大值点的纵坐标字符串
%三行字符来标识最大值点
%图名称字符串
%新建一个图形窗
%画一条黑色的水平线
%保持图形不被清除
%蓝色实线画曲线 y(t)
%大小为 20 的红色圆点标记最大值点
%在最大值点附近显示注释字符
%显示图名
%显示横坐标名
%显示纵坐标名
%取消图形保持【例3-3】作出函数y=e-2tsin(3t)的图形,并标注最大值点clear
t = 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 )' ];
Figure
plot( t,zeros( size(t) ), 'k' )
hold on
plot( 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 offnullnull3.1.3 串转换函数和串操作函数1. 字符串转换函数(详见P76表3.1-1)2. 字符串操作函数(详见P77表3.1-2) length:用来计算字符串的长度(即组成字符的个数)。
char(s1,s2,…):将串s1,s2,…逐个写成行,形成多行数组。
class或ischar:用来判断某一个变量是否为字符串。class函数返回char则表示为字符串,而ischar函数返回1表示为字符串。null strcmp(s1,s2):比较字符串s1和s2是否相同。返回值如果为1则相同,为0则不同。
findstr(s1,s2):寻找在某个长字符串s1中的子字符串s2,返回其起始位置。
deblank(s ): 删除字符串尾部的空格。 >>str1='Hello' ;
>> str2=['I like ''MATLAB'''] %重复单引号来输入含有单引号的字符串
str2 =
I like 'MATLAB' >> length(str2) %字符串str2的长度
ans =
15 >> x1=double(str1) %查看字符串str1的ASCII码
x1 =
72 101 108 108 111>> x2=str1+1 %字符串的数值运算
x2 =
73 102 109 109 112 >> char(x1) %将ASCII码转换成字符串形式
ans =
Hello>> char(x2)
ans =
Ifmmpnull>> char(str1,str2) %形成两行字符
ans =
Hello
I like 'MATLAB'>> strcat(str1,'!',str2,'.') %形成一长串
ans =
Hello!I like 'MATLAB'.>> strcmp(str1,str2) %比较两串是否相同
ans =
0>> findstr(str2,'like') %寻找子串‘like’的起始字符在主串中的下标
ans =
3>> isletter(str2) %以逻辑1指示串中英文字母的位置
ans =
Columns 1 through 12
1 0 1 1 1 1 0 0 1 1 1 1
Columns 13 through 15
1 1 0>> class(str1) ,class(x1), %判断变量类型
ans =
char
ans =
doublenull 执行字符串
如果需要直接“执行”某一字符串,可以使用eval命令,效果就如同直接在MATLAB命令窗口内输入此命令。 >> str3='a=2*5'
str3 =
a=2*5>> eval(str3) %执行字符串
a =
10 显示字符串
字符串可以直接使用disp命令显示出来,即使后面加分号(;)也显示。 >> disp('请输入2*2的矩阵a')
请输入2*2的矩阵a>> disp(char(str1,str2));
Hello
I like 'MATLAB'>>str1='Hello' , str2=['I like ''MATLAB''']
str1 =
Hello
str2 =
I like 'MATLAB'null3.2元胞数组 (Cell Array) 特点:
元胞数组的基本组成单元是元胞(cell),元胞在数组中以下标来进行区分;
元胞可以是任何类型、任意大小的数组(如:数值数组、字符串数组、符号对象等);
一个元胞数组中各个元胞可以是不同类型的内容;
元胞数组的维数不受限制,可以采用单下标或全下标寻址;
元胞和元胞里的内容是两个不同范畴的东西,分别通过“元胞外标识(Cell Indexing)”和”元胞内编址(Content Addressing)”来寻访。“外标识的元胞元素”用圆括号对(),而“编址元胞元素内涵”用花括号对{},如A(2,3)表示元胞数组A第2行第3列的元胞,A{2,3}则表示元胞数组A第2行第3列的元胞中的内容。3.2.1 元胞数组的创建1. 直接使用花括号{}创建 >> clear
>>A={'This is the first Cell.',[1 2;3 4];eye(3),{'Tom','Jane'}}
A =
[1x23 char ] [2x2 double]
[3x3 double] {1x2 cell } 创建的元胞数组中的元胞A(1,1)是字符串,A(1,2)是数组,A(2,1)是数组,而A(2,2)为一个元胞数组。 >> whos
Name Size Bytes Class
A 2x2 524 cell array
Grand total is 49 elements using 524 bytesnull2. 由各元胞创建-外标识元胞元素赋值法 >> B(1,1)={'This is the second Cell.'};B(1,2)={5+3*i};B(1,3)={[1 2;3 4; 5 6]};
>> B %显示元胞数组
B =
[1x24 char] [5.0000+ 3.0000i] [3x2 double]3. 由各元胞内容创建 -编址元胞元素内涵的直接赋值法>> C{1,1}='This is the third Cell.';C{2,1}=magic(4) %生成2×1的元胞数组
C =
'This is the third Cell.'
[4x4 double]3.2.2 元胞数组 的内容显示 在MATALB命令窗口中输入元胞数组的名称,并不直接显示出元胞数组的各元胞元素的内容值,而是显示各元胞元素的数据类型和结构 ,单元素的元胞除外。1. 使用celldisp命令显示元胞数组的内容 A{1,1} =
This is the first Cell.
A{2,1} =
1 0 0
0 1 0
0 0 1A{1,2} =
1 2
3 4
A{2,2}{1} =
Tom
A{2,2}{2} =
Jane>> celldisp(A), celldisp(C)C{1} =
This is the third Cell.
C{2} =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1{}表示元胞数组的元胞元素内容,A{2,2}{1}表示第2行第2列的元胞元素中存放的元胞数组的第1个元胞元素的内容 null2. 使用cellplot命令以图形显示元胞数组的内容 >>cellplot(A) 3.2.3 元胞数组的内容获取 1. 取元胞数组的元素内容 >>x1=A{1,2} %用花括号寻访取A(1,2) 元胞元素的内容
x1 =
1 2
3 4 null【例3-4】元胞数组的基本应用>>C = char('这是', '元胞数组' ); %两行的字符串数组
>>R = reshape( 1:9,3,3 ); % 3×3 的数值数组
>>S = sym( 'sin(-3*t)*exp(-t)' ); %符号表达式
>>A( 1,1 ) = { C }; %对元胞数组 A 进行赋值
>>A{ 2,1 } = S; %注意 {} 和 () 的区别 当用圆括号来寻址时,所表示的是元胞,相应地等号右边也应该是一个元胞;
当用花括号来寻址时,所表示的是元胞中的内容,可以是任意类型、大小的数组。>>x2=A{1,2}(2,2) %取A(1,2) 元胞元素的数组第二行第二列内容
x2 =
4 2. 取元胞数组的元素 >>x3=A(1,2) %用圆括号寻访得到的是元胞
x3 =
[2x2 double] 3. 使用deal函数取多个元胞元素的内容 >>[x4,x5,x6]=deal(A{[2,3,4]}) %单下标寻址取A的三个元胞内容x4 =
1 0 0
0 1 0
0 0 1x5 =
1 2
3 4x6 =
'Tom' 'Jane'注意:x1是数组,x2是标量。 null>> celldisp( A ) %显示元胞数组 A 的元胞中的内容
A{1,1} =
这是
元胞数组
A{2,1} =
sin(-3*t)*exp(-t)
A{1,2} =
[]
A{2,2} =
1 4 7
2 5 8
3 6 9>>A{ 2,2 } = R;
>>A %显示元胞数组 A 的元胞
A =
[2x4 char] []
[1x1 sym ] [3x3 double]>> A{ 2,2 } = {R}
A =
[2x4 char] []
[1x1 sym ] {1x1 cell}
>> celldisp( A )
A{1,1} =
这是
元胞数组
A{2,1} =
sin(-3*t)*exp(-t)
A{1,2} =
[]
A{2,2}{1} =
1 4 7
2 5 8
3 6 9
A{ 2,2 } {1}(1,3)=7考虑A{ 2,2 } = {R}的情况:
>> class( A(2,1) ) %元胞的类型
ans =
cell>> class( A{2,1} ) %元胞的内容的类型
ans =
symnull>> A( 2,1 ) % A 的第2行第1列的元胞
ans =
[1x1 sym]>> A{ 2,1 } % A 的第2行第1列的元胞中的内容
ans =
sin(-3*t)*exp(-t)>> save exm03_04.mat %保存内存变量3.2.4 元胞数组的扩充、收缩和重组 【例3-5】元胞数组的扩充、收缩和重组>> clear
>>load exm03_04 %载入数据文件
>>B = cell( 2 ); %创建空的 2×2 元胞数组
>>B{ 1,1 } = 'Another cell array'; %对元胞数组进行赋值
>>B( :,2 ) = { num2str(R) ; 1+2i } %对第二列元胞赋值,注意前后大小一致
B =
'Another cell array' [3x7 char]
[] [1.0000+ 2.0000i]null>> A_B = [ A ; B ] %将 A, B 作为两行排列得到 4*2 的元胞数组
A_B =
[2x4 char] []
[1x1 sym ] [3x3 double]
'Another cell array' [3x7 char ]
[] [1.0000+ 2.0000i]>>cellplot( A_B , 'legend' ) %元胞数组的形象结构图%元胞数组的收缩
>> A_B( 3,: ) = [] %删除元胞数组的第 3 行
A_B =
[2x4 char] []
[1x1 sym ] [3x3 double]
[] [1.0000+ 2.0000i]>> RA_B = reshape( A_B, 2,3 ) %重新排列元胞数组的内容,得到 2×3 的元胞数组
RA_B =
[2x4 char] [] [3x3 double]
[1x1 sym ] [] [1.0000+ 2.0000i]%元胞数组内容的获取
>> A_B( 2,2 ) %取出 A_B 中的一个元胞
ans =
[3x3 double]null>> A_B{ 2,2 } %取出该元胞的所有内容
ans =
1 4 7
2 5 8
3 6 9>> A_B{ 2,2 } ( 2,: ) %取出该元胞中第 2 行的所有元素
ans =
2 5 8>> [ a1,a2 ] = deal( A_B{ [1,2] } ) %一次取出多个元胞,并逐个分配
a1 =
这是
元胞数组
a2 =
sin(-3*t)*exp(-t)>> a3=A_B{2,2}(:,[1,3]) %取出第 2 行第2列元胞内容中的第1,3列
a3 =
1 7
2 8
3 9注意:花括号、圆括号和中括号在寻址时的不同含义null3.3 构架数组(Structure Array) 特点:
构架数组的基本组成是构架(Structure),以下标区分各个构架;
构架必须划分成“域”后才能使用,每一个构架都包含多个域(Fields) ;
构架不能直接存放数据,数据必须存放在构架下面的“域”中;
构架的域可以存放任意类型、任意大小的数组(数值数组、字符串数组、符号对象、元胞等);
不同构架的同名域中可以存放不同类型的内容;
构架数组可以是任意维的,可以利用单下标或全下标寻址。3.3.1 构架数组的创建 1. 直接创建法-直接对域赋值>>ps(1).name= '曲线1' ; %构架的域由(构架名).(域名)标识
>>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是构架数组,ps(1)和ps(2)是构架,name、color和position是域。 null>>ps %ps为1×2的构架数组,有三个域
ps =
1x2 struct array with fields:
name
color
position>> ps(1) %显示构架
ans =
name: '曲线1'
color: 'red'
position: [0 0 300 300]2. 利用struct函数创建 >> 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:
name
color
position3.3.2 构架数组数据的获取和设置 1. 直接获取 >> x1=ps(1) %获取一个构架x1 =
name: '曲线1'
color: 'red'
position: [0 0 300 300]null>> x2=ps(1) .position %获取构架ps(1)中一个域position的全部内容
x2 =
0 0 300 300>> x3= ps(1) .position(1,3) %获取构架ps(1) position域中第1行第3列的元素内容
x3 =
3002. 用getfield获取构架数组的数据 >> x4=getfield(ps,{1},'color') %获取构架ps(1)中一个域color的全部内容
x4 =
red>> x5=getfield(ps,{1}, 'color',{1}) %获取构架ps(1) color域中第一个元素的内容
x5 =
r3. 用setfield设置构架数组的数据 >> ps=setfield(ps,{1}, 'color', 'green'); %对ps(1)中color域的内容进行设置
ps(1)
ans =
name: '曲线1'
color: 'green'
position: [0 0 300 300]null3.3.3 构架数组域的获取1. 使用fieldnames获取构架数组的所有域 >> x6=fieldnames(ps)
x6 =
'name'
'color'
'position'2. 获取构架数组域的数据 使用“[]”合并相同域的数据并排成水平向量 >> all_x=[ps.name]
all_x =
曲线1曲线2 使用cat将其变成多维数组 >> cat(1,ps.position) %沿第一维排列
ans =
0 0 300 300
100 100 300 300>> cat(2,ps.position) %沿第二维排列
ans =
0 0 300 300 100 100 300 300null>>%1. 创建代表 2 输入 2 输出系统的传递函数的构架数组
>>clear
>>num = { 3,2 ; [4 1],1 }; %分子系数构成的元胞数组
>>den = { [1,3,2],[1,1,1] ; [1 2 2 1],[1 0] }; %分母系数构成的元胞数组>> %2. 获取构架数组的域名
>>FN = fieldnames( SST ) %获取域名,以元胞数组的形式保存
FN =
'num'
'den'
'Variable'
'lti'>>SST = struct( ss ) %将传递函数矩阵转换成构架数组
SST =
num: {2x2 cell}
den: {2x2 cell}
Variable: 's'
lti: [1x1 lti]>>ss = tf( num , den ); %利用控制工具箱函数产生传递函数矩阵null>> class( FN )
ans =
cell>>%3. 获取构架数组域中的内容
>>ff = SST.den %获取 SST 的 den 域中的所有内容,为 2×2 的元胞数组
ff =
[1x3 double] [1x3 double]
[1x4 double] [1x2 double]>> ff{ 2,1 } %获取 ff 中第 2 行第1列中内容,相当于 SST.den{2,1}
ans =
1 2 2 1>> poly2str( ff{2,1},'s' ) %以易读形式显示多项式
ans =
s^3 + 2 s^2 + 2 s + 1>> %4. 赋值操作
>>SST.num{ 2,1 }
ans =
0 0 4 1>>SST.num{ 2,1 } = [ 1 3 1 ]; %对 SST 的 num 域中第2行第1列的元胞内容进行修改>> SST.num{ 2,1 }
ans =
1 3 1null>> %5. 构架数组的扩充
>>size( SST ) %SST为单构架数组
ans =
1 1>> SST( 2,2 ) = struct( tf(1,[1 1]) ) %将 SST 扩充为 2×2 的构架数组
SST =
2x2 struct array with fields:
num
den
Variable
lti>> size(SST)
ans =
2 2>> %6. 构架数组的收缩
>>SST( 1,: ) = [] %将 SST 构架数组的第 1 行删除
SST =
1x2 struct array with fields:
num
den
Variable
lti>> size(SST)
ans =
1 2null>> %7. 构架数组内容的调取
>>Snum=SST(1,2).num %取出 SST构架数组第1行第2列的构架的 num 域
Snum =
[1x2 double]>> Sden=SST(1,2).den %取出 SST构架数组第1行第2列的构架的 den 域
Sden =
[1x2 double]>> printsys( Snum{1}, Sden{1}, ‘s’ ) %利用系统函数打印函数显示 SST 的第1行第2列
%的构架所代表的系统函数
num/den =
1
-----
s + 1>>Snum=SST(1,2).num{1}; %取出 SST构架数组第1行第2列的构架的 num 域的内容
>>Sden=SST(1,2).den{1}; %取出 SST构架数组第1行第2列的构架的 den 域的内容
>>printsys( Snum, Sden, 's' )
num/den =
1
-----
s + 1null【例3-7】其它命令>> clear
>> dept(5).No = 5 %生成 1×5 的构架数组,只有No域
dept =
1x5 struct array with fields:
No>> dept(2).teacher=5 %任一个构架增加 teacher 域,整个构架数组都增加 teacher 域
dept =
1x5 struct array with fields:
No
teacher>> dept(2).teacher.male=2; %增加一个构架的teacher域的子域,对其他构架没有影响
>>dept(2).teacher.female=3
dept =
1x5 struct array with fields:
No
teacher>> dept(2).teacher
ans =
male: 2
female: 3null>> dept(2).teacher=rmfield(dept(2).teacher,'male') %删除子域对其他构架没影响
dept =
1x5 struct array with fields:
No
teacher>> dept=rmfield(dept,'teacher') %删除域对所有构架都有影响
dept =
1x5 struct array with fields:
No 对构架数组增加或减少一个域会影响构架数组内所有的构架;
对某一个构架的域增加或减少一个子域不会影响构架数组内的其它构架。3.4 数据类型归纳null【例3-8】构架数组和元胞数组之间的转换>> for k = 1:5
>> dept(k).No = ['No.',int2str(k)];
>>dept(k).teacher = ['teacher',int2str(k)];
>>end %构造 1×5 构架数组, 有No.域和teacher域>> dept %显示构架数组的结构
dept =
1x5 struct array with fields:
No
teacher>> dept(3) %显示第3个构架的结构
ans =
No: 'No.3'
teacher: 'teacher3'>> DS=struct2cell(dept) ; %将构架数组转换成元胞数组>> size(DS)
ans =
2 1 5STRUCT2CELL Convert structure array to cell array.
C = STRUCT2CELL(S) converts the M-by-N structure S (with P fields)
into a P-by-M-by-N cell array C.
If S is N-D, C will have size [P SIZE(S)].null>> Name=['Class1';'Class2';'Class3' ;'Class4' ;'Class5']; %给出域名字符串数组5×1>> DF=cell2struct(DS,Name,3) %将元胞数组转换成构架数组,按第3维转换成域进行转换
DF =
2x1 struct array with fields:
Class1
Class2
Class3
Class4
Class5>> DF(1,1),DF(2,1)
ans =
Class1: 'No.1'
Class2: 'No.2'
Class3: 'No.3'
Class4: 'No.4'
Class5: 'No.5'
ans =
Class1: 'teacher1'
Class2: 'teacher2'
Class3: 'teacher3'
Class4: 'teacher4'
Class5: 'teacher5'CELL2STRUCT Convert cell array to structure array.
S = CELL2STRUCT(C,FIELDS,DIM) converts the cell array C into
the structure S by folding the dimension DIM of C into fields of
S. SIZE(C,DIM) must match the number of field names in FIELDS.
FIELDS can be a character array or a cell array of strings.null小结
1)字符串数组的创建和标识
单引号对(英文状态下输入),复杂串数组的输入
英文字母、空格、数字、标点、中文字符都占一个元素位
2)元胞数组的创建和标识
圆括号和花括号的区别
元胞可以是任何类型、任意大小的数组
3)构架数组的创建和标识
构架必须划分成域
域和子域的改变对整个构架数组的影响
构架的域可以存放任何类型、任意大小的数组
4)数据类型转换指令
int2str,mat2str,num2str,str2num,char,double,cell2struct,struct2cell