单元数组(里面能包含其他的MatLab数组。形状大小没有限制)
结构数组(命令字段访问数据)
单元数组(通过矩阵索引访问数据)
创建单元数组
用赋值语句创建单元数组
列
1 单元索引
A(1,1)={[1 2 3;3 4 5;3 2 5]}; 矩阵
A(1,2)={'Liu zhong'}; 字符串
A(2,1)={3+7i}; 复数
A(2,2)={-pi:pi/10:pi}; 增量
步长 pi/10
2 内容索引
B{1,1}=[1 2 3;3 4 5;3 2 5];
B{1,2}='Liu zhong';
B{2,1}=3+7i;
B{2,2}=-pi:pi/10:pi;
使用cell函数可以预分配单元数组
单元数组是空的
C=cell(2,3)
使用赋值语句填充
c(1,3)={1:3};
..............
获取单元数组的数据
1 用内容索引的方式
c=B{1,1} 获取1*1单元
c=B{2,2}
2 用单元索引来获取单元的子集
c=B(:) 用冒号获取他的全部单元
c=B(:,1) 读取所有行的第一列 , 以此类推。
c=B(1,:) 读取所有列的第一行 , 以此类推。
注意区别:
2 |
|
重塑单元数组和删除单元
A=cell(3,4)
B=reshape(A,6,2)
reshape函数重新调整矩bai阵的行数、列数du、维数。调用格式:B = reshape(A,m,n)返回一个m*n的矩阵B, B中元素zhi是按列从A中得到的。如果daoA中元素个数没有m*n个, 则会引发错误。
赋值内容索引
A{3,1}='Hello',.......... 以此类推。
删除(线性索引)
线性索引:存储方式先列后行
A(3)=[ ] 从第一列往下数,到第三个元素为空。直接给删了
在matlab中,a(:, 1:3)=[ ]
表示将数组a的第1到第3列删除。
第一个冒号( : )表示取数组a的所有行;
1:3表示取数组a的第1到第3列。
矩阵A,B,求解形如A(B)?
A=[2 3 4;2 3 1;4 5 2]
A =
2 3 4
2 3 1
4 5 2
B=[3 1 4;2 4 5]
B =
3 1 4
2 4 5
A(B)
ans =
4 2 3
2 3 3
A(B)= A[ B(1,1) , B(1,2) ,B(1,3) ; B(2,1) , B(2,2) ,B(2,3) ]
= A[3 1 4;2 4 5]
=
A(3),A(1),A(4);
A(2),A(4),A(5)
按列读取A中的元素
A(B)
ans =
4 2 3
2 3 3