如果没有例子,这个问题很难解释。
假设我有一个向量,
v = [1 1 1 0 0];
我想循环遍历v的每个元素,直到到达末尾,然后再次从头开始等等,即重复向量。
for i = 1:300
answer = v(i);
end
有没有一种方法可以在不用向量的重复版本替换向量v的情况下完成这项工作:
v2 = [1 1 1 0 0 1 1 1 0 0 1 1 ...];
(我想避免在内存中存储长向量)
最佳答案
因此,如果您只是想复制矩阵,请使用 repmat
就像
(假设:n = 300;m = numel(v);
)
v2 = repmat(v1, 1, (n/m))
但是,如果您询问如何获得一个循环来一次索引一个向量元素,60 次(无论出于何种原因),那么您可以使用 mod
来实现:
for i = mod(0:(n-1), m)+1
%// do stuff with v(i)
end
或者更明确(并且更容易阅读)的明显解决方案是嵌套循环:
for j = 1:(n/m)
for i = 1:m;
%// do stuff with v(i)
end
end
关于matlab - 循环遍历重复向量而不显式写出重复出现的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24632672/