我试图创建一个循环,一次从数组中选择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]中。
我正在努力使这成为可能。
希望代码帮助:
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
您可以像下面的代码一样执行此操作
您的算法可以应用于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
祝你玩得愉快!