我有一个结构
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传递,但Coder生成失败并显示以下错误消息
??? Subscripting into an empty matrix is not supported.
答案 0 :(得分:2)
我将做出以下假设:
1. AStructX是2-D
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 :(得分:2)
使用cell2struct
:
len = 7;
fn = fieldnames(AStructX)
AStructY = cell2struct(repmat({[]},numel(fn),len),fn)
这为7x1 struct array
提供了相同的字段,空内容。如果您需要1x7
,只需转置数组(即AStructY = cell2struct(...).'
)。