用于浏览(没有索引变量)GNU Octave / Matlab 中元胞数组元素的 for 循环

A for loop to browse (without an index variable) the elements of a cell array in GNU Octave / Matlab

给定一个元胞数组,比如 c = {'first', 'second', 'third'},如何在不使用索引的情况下在 for 循环中浏览它?

这可以用于数组,因此对于 c = [1, 2, 3],这将有效:

for k = c
  ...         # use k here as an element of c
endfor

元胞数组的等效、优雅的方法是什么? (请注意,元胞数组并不总是可以转换为数组。)

更新:它实际上可以正常工作(即,当 c 是元胞数组时),但前提是值存储在一行中;存储在列中时它将不起作用,例如 c = {'first'; 'second'; 'third'}.

这里有几个选项:

如果 c 的单个元素可转换为数组,则可以使用索引作为循环变量:

for k = 1:numel(c)
   disp(c{k}); 
end

first
second
third

此选项最接近 cellfun 的做法。 (cellfun 是完全替换 for 循环的另一种选择。)

如果元素不可转换为数组(或者您只是想以不同的方式进行),您可以使用 c 作为循环索引并获取循环内的内容:

for k = c
   disp(k{});
end

first
second
third

这是对您在示例中所做的最直接的翻译。