matlab - 通过在每次迭代中省略一个索引来生成一组索引的循环

标签 matlab for-loop

使用 for 循环,我将如何编写代码来生成索引数组,在循环的每次迭代 k 中,我会生成一个索引数组[1, 2, 3, ... N] 从集合中排除 k

例如,如果我有 k = 3 次迭代,第一次迭代会给我索引 (2,3),第二次迭代会给我索引 (1,3) 最后第三次迭代会给我索引 (1,2)

最佳答案

方法#1

您可以使用 setdiff 在每次迭代中排除当前迭代 ID,就像这样 -

for iteration_id = 1:3
    indices = setdiff(1:3,iteration_id)
end

代码运行-

indices =
     2     3
indices =
     1     3
indices =
     1     2

方法#2(矢量化)

您可以采用矢量化方法一次性生成所有索引,如果您必须使用这些索引,可以很容易地在循环内使用 -

num_iters = 3; %// Number of iterations

all_indices = repmat([1:num_iters]',1,num_iters) %//'
all_indices(1:num_iters+1:end)=[]
valid_indices = reshape(all_indices,num_iters-1,[])'

代码运行-

valid_indices =
     2     3
     1     3
     1     2

关于matlab - 通过在每次迭代中省略一个索引来生成一组索引的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28025629/

相关文章:

python - 为什么我的 for 循环打印在每隔一行而不是每一行?

Python:如何创建 for 循环来更改 dict 值并将其附加到列表中?

java - 我希望使用循环将我的变量 value3 添加 5 十次。但它只添加一次。如何解决这个问题?

matlab - 如何在 Curve Fitting Toolbox 中保存修改后的数据?

python - 列表中的编号重合

algorithm - 卡尔曼滤波算法是否有可能产生奇异方差矩阵?

matlab - 图像处理中的数字识别算法/准则

javascript - 未捕获的类型错误 : items is not iterable

string - 这两种 MATLAB 字符串连接方法哪一种更快?

performance - 在 Matlab 中不使用 for 循环操作矩阵