MATLAB——数组类型(二)

发布于:2024-06-28 ⋅ 阅读:(18) ⋅ 点赞:(0)

前言

本章记录一下元胞数组的相关操作。寻访、合并、删除、变形。

元胞数组

元胞数组概念及创建详见MATLAB——数组类型

元胞数组寻访

元胞数组中单元与单元内容是两个不同的东西。因此寻访单元和寻访单元内容的操作同样不同。因此再MATLAB中又对元胞数组设计了不同的操作对象。
即单元外标识(Cell Indexing)和单元内编址(Cell Address)。
假定存在一个元胞数组Cella,Cella(x,y)代表元胞数组的x行y列的单元,而不是单元内的内容。Cell{x,y} 代表元胞数组的x行y列单元的内容。
小括号"()“代表寻访单元,花括号”{}"代表寻访单元内的内容。

Cella = {'hello',3,[1,2,3,4];sin(pi/2),1>2,'byebye'}
unit1 = Cella(2,2)
class(unit1)
unit2 = Cella{2,2}
class(unit2)
上述输出为:
Cella = 
2*3Cell数组
unit1 = 
1*1Cell数组
{[0]}
ans = 'cell'
unit2 = 
logical
0
ans = 'logical'

元胞数组的操作

元胞数组的相关操作。合并、删除、变形。

合并

假定存在元胞数组a{1,2; ‘cella’;3}元胞数组b{‘hello’;1,2,3,4;‘world’}
令c={a b}
则其c的内容为

c={{1,2; 'cella';3};{'hello';1,2,3,4;'world'}}
c=
1*2 cell数组
{1*4 cell} {1*3 cell}

删除

元胞数组的指定单元删除只需要把空矩阵赋给该单元即可。

>> c={sin(pi/2),'Hello,World',[1,2,3],[4,5,6]}
>> c{1,4} = []  %删除第一行第一列的单元
>c=
>1*4 cell数组
{1} {'hello,world'} {1*3 double} {0*0 double}

变形

元胞数组的变形可以借用矩阵的转置来相近理解,即行变列,列变行。元胞数组变形需要利用reshape函数。
使用形式如下

>> newCell = reshape(oldCell,M,N)

该函数将元胞数组oldCell改变为具有M行N列的新元胞数组。
将删除中的c元胞数组进行变形

>>newC = reshape(c,4,1)
>>newC = 
	4*1 Cell 数组
	{1}
	{'hello,world'}
	{1*3 double}
	{0*0 double}