在Matlab中从struct中提取单元格?

时间:2015-06-26 17:31:37

标签: matlab

考虑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单元格。有什么建议吗?

1 个答案:

答案 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_;

希望这有帮助。