在matlab中,使用大括号和小括号引用Cell内的数据有着本质的区别,如果混淆了两种操作返回的数据结构,会给后面的数据处理和编程带来巨大麻烦!
废话少数,下面通过代码举例说明:
celldemo={[1,2,3],'sdfsdfds';[1,2,3;1,5,9],{[5,8,9,7]}};
celllenmen1=celldemo{1,1}
class(celllenmen1)
celllenmen2=celldemo(1,1)
class(celllenmen2)
程序的输出为
>> test2
celllenmen1 =
1 2 3
ans =
double
celllenmen2 =
[1x3 double]
ans =
cell
由结果可知:
-
通过小括号 (row,col) 或(rowstart:rowend,colstart:rowend)的方式获取数据,等价于对cell进行类似数组的操作,系统返回的是对应行列(或所选行列范围内)的cell,这种方式中,返回的数据类型仍然是cell,等价于在MN的cell,拿出一个11(m*n)的cell。
-
通过大括号 {row,col} 的方式获取数据,访问cell数组中的数据,返回的是对应行列cell内的内容
-
此外,如果想要直接获取某个cell内所存矩阵指定位置的数据,可使用大括号+小括号等方式获取,方法如下:
celllenmen3=celldemo{2,1}(1:2,1)
输出为:
celllenmen3 =
1
1