gpt4 book ai didi

matlab - Matlab 中的动态结构生成

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:40 25 4
gpt4 key购买 nike

我有一个字段名称列表,想生成一个嵌套结构。我试过这个:

fn1 = {'a', 'b', 'c'};
fn2 = {'d', 'e', 'f'};
s = struct();
for n1=fn1
for n2=fn2
s.(n1).(n2) = 0 ;
end
end

但是 Matlab 提示符号“.{fieldname)”仅用于动态结构引用(“动态结构引用的参数必须评估为有效的字段名称。”)。

我知道一个可行的解决方案是使用 isfield() 和 struct() 遍历字段名称。那么如何在不使用 isfield() 和 struct() 的情况下实现这个目标,例如通过一些匿名函数和向量化?谢谢

最佳答案

您的主要问题是 n1n2 是元胞数组,它们不是有效的结构名称。因此,写作

s.(n1{1}).(n2{1}) = 0;

修复错误。

但是,更好的方法可能是使用 CELL2STRUCT创建s:

s2 = cell2struct(cell(size(fn2(:))),fn2(:));
s = cell2struct(repmat({s2},size(fn1(:))),fn1(:))

关于matlab - Matlab 中的动态结构生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5291331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com