正如您已经发现的那样,这不是一个错误,而是一个“功能”。换句话说,这是人的正常行为STRUCT http://www.mathworks.com/access/helpdesk/help/techdoc/ref/struct.html功能。如果将空元胞数组作为字段值传递给 STRUCT,则假定您需要一个具有给定字段名称的空结构体数组。
>> s=struct('a',{},'b',{})
s =
0x0 struct array with fields:
a
b
要将空元胞数组作为实际字段值传递,您可以执行以下操作:
>> s = struct('a',{{}},'b',{{}})
s =
a: {}
b: {}
顺便,any当您想要使用 STRUCT 将字段值设置为元胞数组时,需要将其包含在另一个元胞数组中。例如,这将创建一个结构元素,其字段包含元胞数组和向量:
>> s = struct('strings',{{'hello','yes'}},'lengths',[5 3])
s =
strings: {'hello' 'yes'}
lengths: [5 3]
但这创建了一个由两个结构元素组成的数组,分配了元胞数组,但是复制向量:
>> s = struct('strings',{'hello','yes'},'lengths',[5 3])
s =
1x2 struct array with fields:
strings
lengths
>> s(1)
ans =
strings: 'hello'
lengths: [5 3]
>> s(2)
ans =
strings: 'yes'
lengths: [5 3]