Matlab - for loop over cell array "foreach"-like 语法循环仅在第一个元素上

标签 matlab loops for-loop syntax cell-array

<分区>

我以为如果我写

for x = cell_array
    ...
end

然后循环将遍历 cell_array 的元素,但在以下情况下它不会:

>> tags

tags = 

    'dset3'
    'dset4'
    'cpl1'

>> class(tags)

ans =

cell

>> for t = tags
     tmp = t{:}  %No semicolon: i.e. print it.
   end

tmp =

dset3

所以它只适用于第一个元素。

有什么问题?

最佳答案

根据 the documentation , for x = cell_array 将遍历元胞数组的

问题中混淆的原因与 {:} 扩展的行为方式有关:

>> a = {3;4}

a = 

    [3]
    [4]

>> b = a{:}

b =

     3

在上面,a{:} 执行类似于输入逗号分隔列表的操作,其中元素是元胞数组 a 的元素。除了不完全是!如果我们明确地编写这样一个列表,我们会得到:

>> c = 3,4

c =

     3


ans =

     4

不知何故,对于 >> b = a{:}a 的其他元素会被静默丢弃,即使例如a = {1 2; 3 4}.

但是,在其他情况下,a{:} 将扩展为完整的逗号分隔列表:

>> extra_args = {'*-'; 'linewidth'; 30};
>> plot(1:2, extra_args{:})
>> extra_args = {};
>> plot(1:2, extra_args{:})

这将完成其预期的工作。

关于Matlab - for loop over cell array "foreach"-like 语法循环仅在第一个元素上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592053/

相关文章:

Linux 与 Windows 在 MatLab 中执行 lsqcurvefit 和 importdata

javascript - 当找不到使用 XMLHttpRequest() 的文件时如何停止 while 循环?

python - 如何使用 for 循环索引列表?

java - 将列表从 Java 返回到 Freemarker

php - 根据状态和项目名称计算所有项目的总和

c++ - 如何每行打印出 x 个结果

matlab - 如何关闭指定的 MATLAB 图像

matlab - DerivativeCheck 因 minFunc 失败

linux - 如何在 linux 中将 matlab 代码作为脚本文件运行?

loops - Julia,使用 map 多次运行一个函数,