Matlab:如何使用 for 循环在结构中创建多个字段

标签 matlab

我需要在结构中创建一堆字段,其名称仅相差一个数字,如下所示:

S(1).field1 = [];
S(1).field2 = [];
S(1).field3 = [];
S(1).field4 = [];
S(1).field5 = [];

这是列表的简短版本。真正的实际上很长,并且在脚本中看起来不太漂亮,所以我想知道是否可以在 for 循环中启动这些空字段。我尝试过:

for i = 1:5
    S(1).field{i} = [];
end

但它不起作用。

最佳答案

使用动态字段名称:这意味着S.field1S.('field1')完全相同。实际行动:

for k = 1:5
    S(1).(['field' num2str(k)]) = [];
end

请注意,我将循环变量更改为 k:如果不小心,num2str(i) 也可能返回 0+1i .

还有一些更时髦、看似无循环的解决方案,例如:

n = 5;
S = cell2struct(cell(1,5),...
                arrayfun(@(x) ['field' num2str(x)],1:n,'uniformoutput',false),...
                2);

这将为字段值创建一个单元格 {[],[],[],[],[]} 和另一个单元格 {'field1','field2' ,...,'field5'} 作为字段名称,并从中构造一个结构体。

关于Matlab:如何使用 for 循环在结构中创建多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35253165/

相关文章:

matlab - 如何在 MATLAB 中绘制单条堆积条形图?

parallel-processing - 有什么办法可以在 matlab 中为 spmd 命令添加一个开关?

python - numpy数组转入matlab

c++ - 为什么 Matlab 给出的值与 C++ 不同

matlab - 将图形大小分配给具有给定句柄的图形 (MATLAB)

matlab - 如何从 matlab 中计算多项式的函数句柄计算多项式的系数?

Matlab,如何计算AUC(曲线下面积)?

linux - 如何在 Windows 中运行 Matlab 中的 Unix 命令?

matlab - 有没有办法将 MATLAB 工作区插入堆栈?

c++ - 在OpenCV中匹配Matlab的regionprop(x ,'Area')