在matlab中cell函数的作用

我在看一个程序,里面的cell的作用看不懂,有没哪位知道的,解释下,谢谢
A=cell(100,1);
for i=1:100
A(i).flag=-1;
A(i).status=zeros(1,13);
end
这里面的cell的原理是怎么样的?
谢谢你的回答,那个A(i)应该是A{i},我打错了,但是我还是不是很理解cell,在我的程序中,为什么a{i}里可以初始化两个元素(flag,和status),A{i}不就只是一个元素吗
比如a=cell(2,1);
>> for i=1:2
a{i}.f=-1;
a{i}.d=2;
end
这个程序里面是怎么存放的

cell函数在本程序段中起到了定义一个数组的作用。

程序功能:第一句A=cell(100,1),意思是定义一个100X1的数组A

“for ……end”是循环结构,循环体中包含了两个功能,一是使全局变量flag减1,二是使A的状态值返回到一个double类型的1X13的数组。当全局变量flag小于零时循环终止。

下面举例说明cell函数的一般使用情形:

1,首先用cell函数来声明一个新的单元阵列。

2,以声明1x3形式的单元阵列v为例,输入命令行v={B sum(B) prod(prod(B))}

这里需要补充说明B是我们预先声明的一个向量。

3,上一步中的prod的功能是求积运算,所以当向量B的数据类型不同时得到的结果也是不同的。

若B为一个一维向量(或数组),则一次prod运算后得到的是所有元素的乘积,二次prod运算则会将结果还原出来。

若B为矩阵,那么一次prod运算后,对矩阵各列分别求积后得到一个新的数组C,这个数组即为输出结果,二次prod运算后,则将数组C中所有元素求积,然后输出这个积。

以上是cell函数的具体作用。

扩展资料:

用cell函数创建细胞数组,创建的数组为空细胞。cell函数创建空细胞数组的主要目的是为数组预先分配连续的存储空间,节约内存占用,提高执行效率。

从细胞数组中读取数据,可保存为一个标准的数组或一个新的单元数组,或取出数组进行计算。细胞数组中数据的访问,可通过细胞内容的下标进行,用细胞数组名加大括号{}。大括号中数值表示细胞的下标。

细胞型数据的定义方法:

1,直接赋值定义法

2,空间定义法

参考资料来源:

百度百科-cell

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-09-29

一、

1.cell就像很多个抽屉,每个里面可以放不同类型的东西。cell函数是造元素为cell类型的矩阵
你这里A=cell(100,1)就是造了100行1列的cell矩阵。当然此时每个元素里什么都还没有。

2.A{i}.flag=-1;
A{i}.status=zeros(1,13);
就开始定义每个元素里的数据了,可以看到每个cell里保存的都是结构型数据。

3.A{i}.flag=-1;
A{i}.status=zeros(1,13);
实际上并不是在A{i}中储存了两个元素,而是储存了一个结构型数据。

4.matlab中共有六种数据类型,分别为数值、字符、逻辑、结构、细胞、类。
其中细胞就是你这里的cell类型数据。

5.A{i}.flag=-1;
A{i}.status=zeros(1,13);
实际上是在A{i}中储存了一个结构类型数据,它有两个成员,一个名为flag、一个名为status,上面两句话只不过是对这同一个元素的两个成员进行赋值而已。

二、

1.我们都熟悉阵列或矩阵的构成,比如一个m*n大小的矩阵,那么它有m行、n列,共有m*n个元素。如果我们只在实数范围内考虑,那么对应的每一个元素就是一个实数,这是一般的实矩阵。单元阵列也可以有m行n列,对应有m*n个元素。

2.所不同的是单元阵列中每个元素是一个cell(元胞),而每个cell可以由不同数据格式的矩阵构成,构成每个cell的矩阵大小也可以不同,可以是一个元素,也可以是一个向量,也可以是一个多维数组

三、

1.可使用cell函数创建一个空的单元阵列,具体可参考MATLAB中 help cell内容。也可以使用大括号创建,比如我们要创建一个1x3的单元阵列c,则c={A sum(A) prod(prod(A))},可以把A设为一个向量,具体各cell数据类型读者可以用c{1}/c{2}/c{3}读出来然后使用whos函数自己验证。

2.其中prod是求积,若A为一个数组(或一维向量),则一个prod后即可求出所有元素之积,第二个prod则还为原结果。若A为一个矩阵,则第一个prod后针对各列求积,结果保留为一个数组,第二个prod则对该数组所有元素再求积,那么两个prod的结果即为对矩阵所有元素求积。

扩展资料

1. 细胞型数据的定义:

1)直接赋值定义:细胞型变量在定义时需要使用大括号,元素用逗号隔开

例: B = {1:4,A,‘abcd’}

2)使用cell函数,预先为细胞型变量定义空间

例: A = cell(m,n) 定义一个空的m行n列的cell类型

(参考资料 百度百科 CELL

本回答被网友采纳
第2个回答  2019-02-01

MATLAB中cell函数的作用为:cell是matlab中的一种数据类型,概念和“结构”类似。用大括号定义,括号里可以是任意类型的数据或矩阵。可以将单元数组中的每一个元素称为单元(cell),单元可以包含任何类型的数据,如数值数组、字符、符号对象,甚至于其他的单元数组。在这个程序里cell函数的作用为:定义一个数组。

程序功能:第一句A=cell(100,1),意思是定义一个100X1的数组A;“for ……end”是循环结构,循环体中包含了两个功能,一是使全局变量flag减1,二是使A的状态值返回到一个double类型的1X13的数组。当全局变量flag小于零时循环终止。

扩展资料

1.cell的创建:

(1)创建cell的方法:直接使用C={A,B,E,D}这种形式,不过这里把“[]”改成了“{}”。

(2)用cell创建cell:C={C1,C2},这里C1和C2都是cell类型,直接把C1、C2作为一个cell得到C3是一个1*2的cell数组;使用C3 =[C1 C2],是使用C1和C2的内容来创建cell数组。

(3)使用cell函数,A=cell(2,2),创建一个空的2*2的cell矩阵。

2. 关于cell的访问:

(1)X=C(s)使用这个()形式的返回是cell类型。

(2)X=C{s}使用这个{}形式返回的栿cell中的内容。

(3)其他的基本上与通常的数组、矩阵访问一样。

(4)A{1,1}(2,3:end)访问的是A中的第一个cell里面的内容的第二行第三个元素以后的所有元素。

(5)A{1,3}.name访问的是A中A{1,3}中的结构体的name值。

(6)cell图形化显示使用命令cellplot(A)即可。

参考资料来源:百度百科-matlab中cell的用法

本回答被网友采纳
第3个回答  推荐于2019-09-28

1,可使用cell函数创建一个空的单元阵列,也可以使用大括号创建。

2,比如要创建一个1x3的单元阵列c,则c={A sum(A) prod(prod(A))},可以把A设为一个向量,具体各cell数据类型读者可以用c{1}/c{2}/c{3}读出来然后使用whos函数自己验证。

3,其中prod是求积,若A为一个数组(或一维向量),则一个prod后即可求出所有元素之积,第二个prod则还为原结果。

4,若A为一个矩阵,则第一个prod后针对各列求积,结果保留为一个数组,第二个prod则对该数组所有元素再求积,那么两个prod的结果即为对矩阵所有元素求积。

扩展资料:

1.可使用cell函数创建一个空的单元阵列,具体可参考MATLAB中 help cell内容。也可以使用大括号创建,比如我们要创建一个1x3的单元阵列c,则c={A sum(A) prod(prod(A))},可以把A设为一个向量,具体各cell数据类型读者可以用c{1}/c{2}/c{3}读出来然后使用whos函数自己验证。

2.其中prod是求积,若A为一个数组(或一维向量),则一个prod后即可求出所有元素之积,第二个prod则还为原结果。若A为一个矩阵,则第一个prod后针对各列求积,结果保留为一个数组,第二个prod则对该数组所有元素再求积,那么两个prod的结果即为对矩阵所有元素求积。

参考资料:百度百科-CELL

本回答被网友采纳
第4个回答  推荐于2018-02-16
那个A(i)应该是A{i}才对吧。
——————————————————————
cell是matlab中的一种数据类型,用大括号定义,括号里可以是任意类型的数据或矩阵。

B={[1;2]}
这就定义了一个cell型的变量B,里面保存的是一个矩阵[1;2]
要引用里面的数据只要在大括号里写上对应的下标即可,如
B{1}
下面我们给B再加个元素,我们可以这样定义
B(2)={'hello'}
也可以利用引用的方法定义
B{2}='hello'
第二种方法比第一种方法更方便所以更常用。
这样B就有两个元素了,B(1)是{[1;2]},B(2)是{'hello'},每个元素都是cell型的(注意和B{1}、B{2}的区别,B{1}是[1;2],B{2}是'hello')

cell函数是造元素为cell类型的矩阵
你这里A=cell(100,1)就是造了100行1列的cell矩阵。当然此时每个元素里什么都还没有。

然后
A{i}.flag=-1;
A{i}.status=zeros(1,13);
就开始定义每个元素里的数据了,可以看到每个cell里保存的都是结构型数据。
————————————————————————————
A{i}.flag=-1;
A{i}.status=zeros(1,13);
实际上并不是在A{i}中储存了两个元素,而是储存了一个结构型数据。

matlab中共有六种数据类型,分别为数值、字符、逻辑、结构、细胞、类。
其中细胞就是你这里的cell类型数据。

A{i}.flag=-1;
A{i}.status=zeros(1,13);
实际上是在A{i}中储存了一个结构类型数据,它有两个成员,一个名为flag、一个名为status,上面两句话只不过是对这同一个元素的两个成员进行赋值而已。

实际上我们也可以自己定义一个结构变量,比如
a.one=[1;2];
a.two='hello';

a就是一个结构型的变量,它有两个成员,分别叫one和two。但请记住,a是一个变量,不是两个变量。本回答被提问者和网友采纳