【问题标题】:What is MATLAB equivalent of Java direct loop over elements?什么是 MATLAB 等效于 Java 直接循环元素?
【发布时间】:2014-10-03 10:15:05
【问题描述】:

在 Java 中,我可以直接循环遍历数组中的元素,例如:

int[] array = [1,2,3,4];
for (int elem: array){
  System.out.println(elem);
}

而不是通过索引循环

int[] array = [1,2,3,4];
for(int i=0; i<array.length; i++){
  System.out.println(array[i]);
}

如何在 MATLAB 中做同样的事情?

【问题讨论】:

  • 在我看来,否决票是合理的。而不是问“我怎样才能在 MATLAB 中做同样的事情?”您可以尝试实际执行此操作,documentation 对您提出的所有问题都非常清楚。这个问题没有表现出任何努力,只是因为你得到了一个很好的答案(尽管它只是扩展了文档) - 并没有使问题变得更好。
  • 同意,文档清晰。我没有遇到它。据我了解,必须谨慎使用 SO 否决票,并且必须谨慎使用极端情况——据我所知,作为 SO 用户,我应该帮助改进问题,而不是通过down voting 将它们扔掉。我很确定专家 SO 用户会同意我的观点。 cmets 中的“您尝试了什么”之类的问题可以帮助改进问题并教新用户编写更好的问题。
  • @Bob,对问题的否决票应该谨慎使用。看看这个meta question (and answer)。 Meta 主要由您称为“专家 SO 用户”的人访问,因此我可以肯定地说专家用户不一定同意您的观点。话虽如此,在投票时发表评论解释原因是一个很好的姿态。另请查看此元帖子,解释社区如何尝试Optimize for pearls, not sand

标签: matlab loops for-loop


【解决方案1】:

在 Matlab 中,与您的问题类似的两个选项是:

%// Loop via indices
array = [10 20 30 40];
for n = 1:numel(array)
   disp(array(n));
end

%// Loop over elements directly    
array = [10 20 30 40];
for elem = array
   disp(elem);
end

一些注意事项:

  1. 当通过索引循环时,语句for n = 1:1000 不会创建整个数组 1:1000。因此,您可以安全地编写例如for n = 1:inf(然后可能在循环中使用break)。

  2. 当在循环语句中证明了一个数组时,Matlab 循环。比如

    %// Loop over elements (columns) directly
    array = [10 20 30 40; 50 60 70 80];
    for elem = array
       disp(elem);
    end
    

    elem 设置为[10; 50],然后设置[20; 60]

  3. 数组可以是任何类型,不一定是数字(列规则仍然适用)。例如,

    %// Loop over elements (columns) directly, using a cell array
    array = {'Hello', 'Hi'; 'Goodbye' 'Godspeed'};
    for elem = array
       disp(elem);
    end
    

    使elem等于列元胞数组{'Hello'; 'Goodbye'},然后等于{'Hi'; 'Godspeed'}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2023-03-18
    • 2016-03-30
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    相关资源
    最近更新 更多