Matlab刻意训练
Task04:单元数组(3.16)
3.16.1 单元数组的创建及赋值
- 单元数组是一种MATLAB数组,它的每一元素是单元,在单元里可以保存各种类型MAT-LAB数组。例如单元数组、实数矩阵、文本字符串数组、结构数组以及其他复数向量等。
创建
C=cell(n) %建立n阶单元空方阵
C=cell(m,n) %建立m行n列单元空矩阵
C=cell(size(A)) %建立与矩形A同维的空单元矩阵
赋值
(1)下标索引
>> A(1,1)={magic(3)};
>> A(1,2)={'10/1/2004'};
>> A(2,1)={1:5};
>> A(2,2)={[1+2*i 2-3*i;2+3*i 1-2*i]};
>> A %显示单元数组的结构
A =
2×2 cell 数组
{3×3 double} {'10/1/2004'}
{1×5 double} {2×2 double }
>> celldisp(A) %显示单元数组A的全部内容
A{1,1} =
8 1 6
3 5 7
4 9 2
A{2,1} =
1 2 3 4 5
A{1,2} =
10/1/2004
A{2,2} =
1.0000 + 2.0000i 2.0000 - 3.0000i
2.0000 + 3.0000i 1.0000 - 2.0000i
(2)单元索引
>> A{1,1}=magic(3);
>> A{1,2}='10/1/2004';
>> A{2,1}=1:5;
>> A{2,2}=[1+2*i 2-3*i;2+3*i 1-2*i];
>> celldisp(A)
A{1,1} =
8 1 6
3 5 7
4 9 2
A{2,1} =
1 2 3 4 5
A{1,2} =
10/1/2004
A{2,2} =
1.0000 + 2.0000i 2.0000 - 3.0000i
2.0000 + 3.0000i 1.0000 - 2.0000i
<<cellplot(A)
3.16.2 单元数组的删除和改写
删除
>>A{a,b}=[]
改写
>> A=cell(4,6) %预分配单元数组A
A =
4×6 cell 数组
1 至 5 列
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
6 列
{0×0 double}
{0×0 double}
{0×0 double}
{0×0 double}
>> B=reshape(A,3,8) %改写成3行8列
B =
3×8 cell 数组
1 至 5 列
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
6 至 8 列
{0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double}
>> C=B(:,4:8) %取B的4~8列得单元数组C
C =
3×5 cell 数组
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double} {0×0 double} {0×0 double}
3.16.3 单元数组的运算
>> A=cell(2,3)
A =
2×3 cell 数组
{0×0 double} {0×0 double} {0×0 double}
{0×0 double} {0×0 double} {0×0 double}
>> A{1,1}=rand(2,3);
>> A{1,2}=rand(3,2);
>> A{2,1}=[1 3 5 7];
>> A{2,2}=1:4;
>> A{1,3}=A{1,1}*A{1,2}; %乘积赋入A{1,3}
>> A{2,3}=conv(A{2,1},A{2,2}) %卷积赋入A{2,3}
A =
2×3 cell 数组
{2×3 double} {3×2 double} {2×2 double}
{1×4 double} {1×4 double} {1×7 double}
>> celldisp(A)
A{1,1} =
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975
A{2,1} =
1 3 5 7
A{1,2} =
0.2785 0.9649
0.5469 0.1576
0.9575 0.9706
A{2,2} =
1 2 3 4
A{1,3} =
0.9018 1.4199
0.8452 1.1126
A{2,3} =
1 5 14 30 41 41 28
注:卷积是两个变量在某范围内相乘后求和的结果