在没有明确写出重复出现的情况下循环重复向量

时间:2014-07-08 13:05:55

标签: matlab vector repeat

如果没有例子,这个问题很难解释。

说我有一个矢量,

v = [1 1 1 0 0];

我想循环遍历 v 的每个元素,直到我结束,然后再从头开始等,即向量重复。

for i = 1:300
    answer = v(i);
end

有没有办法让这项工作没有用向量的重复版本替换vector v

v2 = [1 1 1 0 0 1 1 1 0 0 1 1 ...];

(我想避免在存储器中存储长矢量)

1 个答案:

答案 0 :(得分:3)

因此,如果您只是尝试复制矩阵,请使用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