matlab - Matlab 中的动态结构生成

标签 matlab

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

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/

相关文章:

MATLAB:如何使用 ButtonDownFcn 存储单击的坐标

matlab - 透视变换无法在Matlab中计算场景中的适当线

matlab - 为什么我的二分搜索比 MATLAB 中的线性搜索运行得慢?

Matlab:如何合法关闭程序?

algorithm - 用于图像压缩的 K 均值仅给出黑白结果

matlab - 将列添加到元胞数组

c - 你如何将文本文件中的数据导入MATLAB来制作圆锥体?

arrays - 如何在 Matlab 中将结构体的叶子作为向量返回?

matlab - 用于光纤对准的傅里叶变换

matlab - 我有 N*M 矩阵和两个 1*M 行向量,我想对它们进行向量化数学运算