什么是MATLAB等效的Java直接循环元素?

Bob*_*Bob 1 matlab loops for-loop

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

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

而不是通过索引循环

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

我怎样才能在MATLAB中做同样的事情?

Lui*_*ndo 5

在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
Run Code Online (Sandbox Code Playgroud)

一些说明:

  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
    
    Run Code Online (Sandbox Code Playgroud)

    将设置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
    
    Run Code Online (Sandbox Code Playgroud)

    使elem等于所述列单元阵列{'Hello'; 'Goodbye'},然后到{'Hi'; 'Godspeed'}