最近帮人写属性约简的程序,遇到了大小不同的数组需要存一块,于是用上了元胞,总结一下用法以后万一还要用,自用的就别嫌弃我写的比较乱了。
创建元胞或者索引元胞时都使用‘{}’
例如
a{1}=1
a{2}=1
结果
a =
1×2 cell 数组
{[1]} {[1]}
如果要索引a其中的某个元胞就用a(),要索引某个元胞的内容就用a{}
a(1)
ans =
1×1 cell 数组
{[1]}
a{1}
ans =
1
创建一个元胞矩阵
for ii=1:3
for jj=1:3
eval(strcat('a{',num2str(ii),',',num2str(jj),'}','=ii:ii+3'))
end
end
结果
a =
3×3 cell 数组
{1×4 double} {1×4 double} {1×4 double}
{1×4 double} {1×4 double} {1×4 double}
{1×4 double} {1×4 double} {1×4 double}
如果要取某一列的话用a(:,x)
a(:,1)
ans =
3×1 cell 数组
{1×5 double}
{1×4 double}
{1×3 double}
如果要取某一列其中的内容就不能用a{:,x}
a{:,1}
ans =
1 2 3 4 5
ans =
2 3 4 5
ans =
3 4 5
要取某一列其中的内容要用cell2mat(a(:,x))
cell2mat(a(:,1))
ans =
1 2 3 4
2 3 4 5
3 4 5 6
要取元胞矩阵中某个元胞的某个值就用a{x,y}(z)
a{1,1}(1)
ans =
1
总结:元胞矩阵也是矩阵,索引方式同矩阵,提取元胞内容用‘{}’,元胞内容是什么,索引时就用什么索引。