假设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开始时如何完成?
答案 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即可。