如何多次遍历1D数组元素?

时间:2017-09-05 15:13:48

标签: matlab octave

假设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)我收到错误时:

  

错误:arr(0):下标必须是整数1到(2 ^ 31)-1或逻辑

索引从1开始时如何完成?

1 个答案:

答案 0 :(得分:5)

在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即可。