Arrays 不带值的结构数组初始化

Arrays 不带值的结构数组初始化,arrays,matlab,array-initialization,Arrays,Matlab,Array Initialization,我有一个结构 AStructX : 7x1 struct array with fields: field1 field2 field3 field4 field5 现在我想生成一个空的1x7,它看起来像上一个结构,但是有空值 我试过了 AStructY=repmat(AStructX(1,1,7))但复制了AStructX的值 我试过了 AStructY=repmat(AStructX(1),1,0)当我向它添加值时,它通过MATLAB,但编码器生成失

我有一个结构

AStructX : 7x1 struct array with fields:
    field1
    field2
    field3
    field4
    field5
现在我想生成一个空的1x7,它看起来像上一个结构,但是有空值

我试过了
AStructY=repmat(AStructX(1,1,7))但复制了
AStructX
的值

我试过了
AStructY=repmat(AStructX(1),1,0)当我向它添加值时,它通过MATLAB,但编码器生成失败,并显示以下错误消息

???不支持订阅空矩阵。

我将做出以下假设:
1.AStructX是二维的。
2.您希望新结构的大小为
size(AStructX')

3.字段名不是固定的

为此,首先需要字段名,然后创建一个新的结构,其中包含空单元格作为值:

names = fieldnames(AStructX)'; %'// row vector
len = length(names); %// number of fields
for i=1:len
  names{2,i} = cell(size(AStructX')); %'// the contents are empty
end
AStructY = struct( names{:} ); %// will take the names matrix columnwise
这将导致完全为空的条目(
[]
),如果要将值初始化为
0
,则循环中的行变为空

  names{2,i} = num2cell(zeros(size(AStructX'))); %'// initialize values to 0

我将做出以下假设:
1.AStructX是二维的。
2.您希望新结构的大小为
size(AStructX')

3.字段名不是固定的

为此,首先需要字段名,然后创建一个新的结构,其中包含空单元格作为值:

names = fieldnames(AStructX)'; %'// row vector
len = length(names); %// number of fields
for i=1:len
  names{2,i} = cell(size(AStructX')); %'// the contents are empty
end
AStructY = struct( names{:} ); %// will take the names matrix columnwise
这将导致完全为空的条目(
[]
),如果要将值初始化为
0
,则循环中的行变为空

  names{2,i} = num2cell(zeros(size(AStructX'))); %'// initialize values to 0
使用:

这将给出一个具有相同字段、空内容的
7x1结构数组。如果您想要一个
1x7
,只需转换数组(即
AStructY=cell2struct(…)。
)。

使用:


这将给出一个具有相同字段、空内容的
7x1结构数组。如果您想要一个
1x7
,只需转换数组(即
AStructY=cell2struct(…)。
)。

如果不支持,请不要这样做。使用
AStructY=El
代替插入第一个元素
cell2struct
方法是否与编码器生成兼容?我无法测试。如果不支持,请不要这样做。使用
AStructY=El
代替插入第一个元素
cell2struct
方法是否与编码器生成兼容?我无法测试。AStructX是一个一维结构数组,结构有字段s1-field5,这是具有自定义字段名的二维特例,只允许有两个以上的维度。这将在您的示例中起作用。它给了我一个数组元素的结构,它更接近于我正在尝试获取的was真的吗?它应该是一个结构数组。。。你能试着用二维阵列看看这是否是问题所在吗?我有解决这个问题的办法,但这不应该是原因。。。当我测试它时,它确实工作了,你使用什么Matlab构建?R2013a,我会重试itAStructX是一个一维结构数组,结构有字段1-Field5,这是一个带有自定义字段名的二维特例,它不允许有超过2维。这将在您的示例中起作用。它给了我一个数组元素的结构,它更接近于我正在尝试获取的was真的吗?它应该是一个结构数组。。。你能试着用二维阵列看看这是否是问题所在吗?我有解决这个问题的办法,但这不应该是原因。。。当我测试它时,它确实起作用了,你使用什么样的Matlab构建?R2013a,我将重试它。对,有一种内置方式。对,有一种内置方式。