如何防止在matlab中创建struct数组?

时间:2016-03-10 17:39:29

标签: arrays matlab struct

我正在尝试制作这样的结构

  

a =

a: {'aa'  'aaa'}
b: {'bb'}

可以将单元格值分配给每个字段。

a=[];
a.a = {'aa','aaa'};
a.b = {'bb'};

但如果我喜欢这个

a=struct('a',{'aa','aaa'},'b',{'bb'});

结果是一个struct array

  
    
      

a =

    
  
     

包含字段的1x2结构数组:

a
b
     
    
      

A(1)

    
  
     

ans =

a: 'aa'
b: 'bb'
     
    
      

A(2)

    
  
     

ans =

a: 'aaa'
b: 'bb'

使用struct()制作此类结构的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

这是documented behavior

  

s = struct(field,value)使用指定的结构数组创建   领域和价值观。 value输入参数可以是任何数据类型,例如   作为数字,逻辑,字符或单元格数组。

     

如果value是单元格数组,则s是一个与value具有相同尺寸的结构数组。 s的每个元素都包含相应的元素   value的元素。例如,s = struct('f',{'a','b'})返回   s(1).f = 'a' and s(2).f = 'b'

实在没有错误的方法,两种选择都很好。如果您想使用struct,则需要嵌套您的单元格数组:

a = struct('a', {{'aa','aaa'}}, 'b', {'bb'});

产生:

a = 

    a: {'aa'  'aaa'}
    b: 'bb'