考虑Matlab中的以下代码
for h=1:2
B=randn(3,2);
C=randn(3,2);
A={B C};
baseA_.A=A;
eval(['baseA.A' num2str(h) '= baseA_;'])
end
clearvars -except baseA
现在,在循环的每次迭代h
中,我想提取结构1x2
内的Ah
单元格。
我试过了
for h=1:2
indA=sprintf('A%d', h);
Acell = struct2cell(baseA.(indA));
end
但Acell
是包含1x1
单元格的1x2
单元格。我希望直接Acell
等于1x2
单元格。有什么建议吗?
答案 0 :(得分:1)
您可以按如下方式修改第二个循环:
for h=1:2
indA=sprintf('A%d', h);
Acell = baseA.(indA).A;
end
在每次迭代中,Acell都会被覆盖,但我假设你只发布了一部分循环代码。
此外,通过使用您在第二个循环中使用的相同方法,您可以避免使用eval
替换该行代码:
%eval(['baseA.A' num2str(h) '= baseA_;'])
indA=sprintf('A%d', h)
baseA.(indA)=baseA_;
希望这有帮助。