通常在MATLAB中迭代遍历结构数据类型的方法是使用
很不幸,这总是会生成单元格数据类型,我想在SIMULINK中使用这种迭代方式进行Matlab函数块,但由于代码生成原因,不允许使用单元格数据类型。
有没有一种方法可以在不同时使用单元格数据类型的情况下遍历结构?
在Octave中,有一种巧妙的方法解释在https://www.gnu.org/software/octave/doc/interpreter/Looping-Over-Structure-Elements.html。
有人知道MATLAB中类似的方法吗?
fieldnames()
函数,如下所示:mystruct = struct('a',3,'b',5,'c',9);
fields = fieldnames(mystruct);
for i=1:numel(fields)
mystruct.(fields{i});
end
很不幸,这总是会生成单元格数据类型,我想在SIMULINK中使用这种迭代方式进行Matlab函数块,但由于代码生成原因,不允许使用单元格数据类型。
有没有一种方法可以在不同时使用单元格数据类型的情况下遍历结构?
在Octave中,有一种巧妙的方法解释在https://www.gnu.org/software/octave/doc/interpreter/Looping-Over-Structure-Elements.html。
for [val, key] = mystruct
# do something esp. with 'key'
end
有人知道MATLAB中类似的方法吗?
structfun
可以帮助你。 - Jonasmystruct
的值部分,即用[10, 11, 12]替换值3、5、9,以此类推。我还不知道在这种情况下如何使用structfun
语句。有什么提示吗?这是否是将结构体转换为第一步?是否存在一个简单的函数(没有{}出现!)可以将1x1结构转换为1x3形式:struct('key',{'a','b','c'},'val',{3,5,9})
? - unndreayfieldnames
的支持。 - Ryan Livingston