如何多次循环一维数组元素?

How to loop through 1D array elements multiple times?

假设 size_of_array < n,多次遍历数组元素,通常我会使用类似(在 C++ 中)的东西:

for (size_t i = 0; i < n; ++i)
{
    elem = arr[ i % size_of_arr ];
} 

如果 arr = {1, 2, 3};,对于 elem 我会得到:

1 2 3 1 2 3 ...

但是,在 MATLAB / Octave 中索引从 1 开始并且:

for i = 1 : n

  elem = arr( mod( i, length(arr) + 1) );
end

所以当 n == length(arr) 我得到一个错误:

error: arr(0): subscripts must be either integers 1 to (2^31)-1 or logicals

索引从1开始是怎么做到的?

在 C++ 中你会做

arr[ i % size_of_arr]

其中内部索引 i % size_of_arr[0 size_of_arr-1]

范围内

在 MATLAB 中,i[1 size_of_arr] 范围内,因此只需更改为

mod( i-1, numel(arr) ) + 1

第一位 (mod( i-1, numel(arr))) 确保索引在 [0 size_of_arr-1] 内,您只需向其加 1。