知乎来的:https://zhuanlan.zhihu.com/p/25401241 自己再加了些平时学习程序里面的元胞
元胞数组
矩阵只适合存放和处理若干相同类型的数据,要想同时存放和处理多种类型的数据就需要用元胞数组。
1. 元胞数组的创建
用“{ }”来创建,以区别创建矩阵的“[ ]”。
(1) 赋值语句创建
a = {'hello' [1 2 3; 4 5 6]; 1 {'1' '2'}}
%创建2×2的元胞数组,
%同行元素间用“, 或空格”隔开
%行与行间用“;”隔开
%第1行第1列的元胞,存放字符串'hello';
%第1行第2列的元胞,存放一个2×3矩阵
%第2行第1列的元胞,存放数 1
%第2行第2列的元胞,存放1×2元胞数组
运行结果:a = 'hello' [2x3 double]
[ 1] { 1x2 cell }
(2) 对元胞数组各元胞一一赋值
例如(1)中的元胞数组a也可以这样创建:
a{1,1} = 'hello';
a{1,2} = [1 2 3; 4 5 6];
a{2,1} = 1;
a{2,2} = {'1' '2'};
(3) 用cell( )函数创建
a = cell(2,3) % 生成2×3的空元胞数组
此时, a = [] [] []
[] [] []
再赋值或操作。
2. 元胞数组元胞的访问
a{i, j}——返回第i行第j列元胞的数据内容。比如,对前例中的元胞数组a,有
a{1,2} = 1 2 3
4 5 6
a(i,j)——返回第i行第j列的元胞外观。比如,a(1,2) = [2x3 double]
3. 元胞数组的操作(函数)
a(i,:) = []; ——删除a的第i行
iscell(a) ——判断a是否是元胞数组,返回逻辑值1或0;
celldisp(a)——显示元胞数组a中各元胞的内容;
celldisp(a,’cell1’)——显示元胞数组a中各元胞的内容,用“cell1”代替元胞数组名“a”;
cellplot(a)——以图形化的方式显示元胞数组a的内容.
cellfun(fun,a)——将函数fun分别做用在元胞数组a的每个元素上。
然后自己学习中遇到的:
O{50,50} = [O{50,50} 2];
其实O是一个200*200的元胞数组,像这样:=[] [] [] [] ... []
. . . . . . . . .
[] [] [] [] ...[]
上述程序描述O中(50,50)位置上的值用2代替
赋值时必须使用大括号
但是赋值也可以 O{50,50} =2; 这样写,目前没有找到两个的差异。有懂的同学可以指导一下:)
我找到上面两个的差异了,如果坐标位置和所赋的值是变量,在循环结束后,O{i,j} = [O{i,j} k]; 它会存储下该位置上的所有赋过的值,而O{50,50} =2; 不会