【问题标题】:How to loop over 3 elements of an array?如何循环遍历数组的 3 个元素?
【发布时间】:2022-01-02 20:00:07
【问题描述】:

我正在尝试创建一个循环,一次从数组中选择 3 行,然后再进行一些计算。

例如:

数组 = [2 3 4; 4 5 6; 7 8 9; 10 11 23; 23 56 78; 67 55 89; 90 87 32]

所以在第一个循环中应该选择 [2 3 4; 4 5 6; 7 8 9]

在第二个循环中 [10 11 23; 23 56 78; 67 55 89]。

我正在努力使这成为可能。

【问题讨论】:

  • array(i:1+2, :)。请记住,matlab 允许您为范围指定一个步骤 1:3:size(array, 1)
  • @PranavHosangadi 如何使用这两行代码形成我的 for 循环?

标签: matlab


【解决方案1】:

希望对代码有所帮助:

clear, clc
% Array 
Arr = [2 3 4; 4 5 6; 7 8 9; 10 11 23; 23 56 78; 67 55 89; 90 87 32];
% Define The Length to Prevent the Error of Iteration in For Loop
if mod(size(Arr,1),3) ==0
    LenArr = size(Arr,1); % Length Examined 
else
    LenArr = size(Arr,1) - mod(size(Arr,1),3);
end
Counter = 1;  
for i = 1:3: LenArr
    Iter = Arr(i:i+2, :); % Here the Answer of the Question 
    % Disply Results ----------
    fprintf('Iteration %d = \n',Counter)  
    disp(Iter)
    Counter = Counter+1;
    %--------------------------
end

结果:

Iteration 1 = 
     2     3     4
     4     5     6
     7     8     9

Iteration 2 = 
    10    11    23
    23    56    78
    67    55    89

【讨论】:

    【解决方案2】:

    你可以像下面的代码那样做

    您的算法可以应用于 selectBlockLocations 变量。

    array = [2 3 4; 4 5 6; 7 8 9; 10 11 23; 23 56 78; 67 55 89; 90 87 32];
    
    number_of_loop = floor(length(array)/3);
    
    for i=0:number_of_loop-1
        selectBlockLocations = array(i*3+1:i*3+3, 1:end);
        disp(selectBlockLocations)
    end
    

    结果:

     2     3     4
     4     5     6
     7     8     9
    
    10    11    23
    23    56    78
    67    55    89
    

    玩得开心!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 2010-11-16
      • 2015-11-05
      相关资源
      最近更新 更多