我的需求是一个可以动态改变大小的三维数组,但是matlab要求三维数组每页大小必须相等(类比二维数组每行的列数必须相等),于是需求不能实现,决定用cell来代替
1 元胞示例
例:我要存五个二维数组:
[1 2;3 4]、[1 2 3 ;4 5 6]、[1 2 3 4;5 6 7 8]、[1 2 3 4 5;6 7 8 9 0]、[1;2]
>> c=cell(1,5)
c =
1×5 cell 数组
[] [] [] [] []
>> a=[1 2;3 4]
a =
1 2
3 4
>> c(1,1)={a}
c =
1×5 cell 数组
[2×2 double] [] [] [] []
>> c{1,1}
ans =
1 2
3 4
>> b=[1 2 3 ;4 5 6];c(1,2)={b};
>> b=[1 2 3 4;5 6 7 8];c(1,3)={b};
>> b=[1 2 3 4 5;6 7 8 9 0];c(1,4)={b};
>> b=[[1;2]];c(1,5)={b};
>> c
c =
1×5 cell 数组
[2×2 double] [2×3 double] [2×4 double] [2×5 double] [2×1 double]
>> c{1,2}
ans =
1 2 3
4 5 6
>>
注意:取值的时候要用{}
而不是()
>> c{1,2}
ans =
1 2 3
4 5 6
>> c(1,2)
ans =
cell
[2×3 double]
2 元胞实现三维动态数组
2.1 添加行
例:在第一行第二列的元胞再添加一行
>> c{1,2}
ans =
1 2 3
4 5 6
>> c{1,2}=[c{1,2};7 8 9]
c =
1×5 cell 数组
[2×2 double] [3×3 double] [2×4 double] [2×5 double] [2×1 double]
>> c{1,2}
ans =
1 2 3
4 5 6
7 8 9
2.2 添加列
在第一行第一列的元胞再添加一列
>> c{1,1}
ans =
1 2
3 4
>> c{1,1}=[c{1,1},[5;6]]
c =
1×5 cell 数组
[2×3 double] [4×3 double] [2×4 double] [2×5 double] [2×1 double]
>> c{1,1}
ans =
1 2 5
3 4 6
2.3 取值
>> c{1,3}(1,3)
ans =
3