matlab——cell(以及和struct的转换)

元胞数组    

它与数组的区别是:每个元素可以是不同类型的,可是不同大小的矩阵,也可以是字符串,结构体等 使用元胞数组要区分(),{}的区别。     

 1)创建元胞数组

[cpp]  view plain  copy
 print ?
  1. >> c(1,1)={[1,2;3 4]};  
  2. >> c(1,2)={'tom is a sb'};  
  3. >> c(2,1)={[1,2,3,4,5,6]};  
  4. >> c(2,2)={struct('name','rose','age',21)};  
  5. >> c  
  6. c =   
  7.     [2x2 double]    'tom is a sb'  
  8.     [1x6 double]     [1x1 struct]  
2)调取元胞数组的元素
{ }:可以返回一个元胞中的具体数据; () :返回该位置的数组类型信息
  1. >> c(1,1)  
  2. ans =   
  3.     [2x2 double]  
  4. >> c{1,1}  
  5. ans =  
  6.      1     2  
  7.      3     4  
  8. >>   


[cpp]  view plain  copy
 print ?
  1. >> B(3,3)={'hello'};  
  2. >> B  
  3. B =   
  4.      []     []         []  
  5.      []     []         []  
  6.      []     []    'hello'  
  7. >>   

创建一个3*3的元胞数组,并组在(3,3)位置的赋值

   3)几个函数       

 celldisp(c);     %显示   

.用函数celldisp()显示单元内容

  1. celldisp(c):该函数显示单元数组c每个单元的内容

    matlab——cell(以及和struct的转换)_第1张图片






  2. celldisp(c,'name'):该函数采用名称name来显示单元型变量c每个单元的内容

    matlab——cell(以及和struct的转换)_第2张图片 步骤阅读


    












 cell2struct();        num2cell();        iscell(); 

将cell数组转换为struct数组

n=3;
%% 初始化一个cell数组
c_info=cell(n,1);
id=[12 3 8];

name={'x','l','h'};
age=[20 22 24];
for i=1:n;
    c_info{i}.id=id(i);
    c_info{i}.name=name{i};
    c_info{i}.age=age(i);
end
%% 转化代码
cs_info=[c_info{:}];


总结:1)struct和cell看起来是像相似的,其实可以这样理解struct只能过构造1*n个元素,

        而cell就是个变态版的数  组            

          2)他们真的没什么联系~~~ 


struct和cell之间的转换



你可能感兴趣的:(matlab——cell(以及和struct的转换))