matlab - 循环遍历重复向量而不显式写出重复出现的位置

标签 matlab vector repeat

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

假设我有一个向量,

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/

相关文章:

matlab - matlab 中非均匀网格上的 3 维傅里叶变换

Matlab 柯尔莫哥洛夫-斯米尔诺夫检验

MySQL 内连接子句字段未找到

google-sheets - 在 Google 表格中多次重复一系列项目

c++ - 关于c++中 vector push_back()的问题,我不知道如何在()里面填充

html - 在多个页面中重复相同的 HTML 代码

MATLAB 控制台输出

matlab - 在matlab中计算不同的唯一数字

c++ - 在 C++ 中使用邻接表在图中添加边

c++ - 用数组或 vector 实现多维数组