【问题标题】:How to prevent the creation of struct array in matlab?如何防止在matlab中创建结构数组?
【发布时间】:2016-03-10 17:39:28
【问题描述】:

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

a =

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

为每个字段分配单元格值就可以了。

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

但如果我喜欢这样

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

结果是一个结构体数组

a =

带字段的 1x2 结构数组:

a
b

一个(1)

ans =

a: 'aa'
b: 'bb'

a(2)

ans =

a: 'aaa'
b: 'bb'

使用struct() 制作这样一个结构的正确方法是什么?

【问题讨论】:

    标签: arrays matlab struct


    【解决方案1】:

    这是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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      相关资源
      最近更新 更多