假設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 /倍頻程索引從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開始?
這種習慣形式是'mod(i-1,n)+ 1'(我稱之爲基於_1的modulus_)。所以,也許'elem = arr(mod(i-1,length(arr))+ 1);'對你有用(我不確定你想要達到什麼效果) –
永遠不會使用'length',它會返回最長維度的長度。相反,使用'numel'(元素數量)。 – carandraug
'錯誤:arr(0):'零是Matlab試圖對你大喊大叫。 – Yvon