作者:小朋友们还记得我吗对了我就是 | 来源:互联网 | 2023-05-26 09:46
使用for
循环,我如何编写代码来生成索引数组,在循环k
的每次迭代中,我会生成一个索引数组,从中[1, 2, 3, ... N]
排除k
?
举个例子,如果我有k = 3
迭代,第一次迭代会给我索引(2,3)
,第二次迭代会给我索引(1,3)
,最后第三次迭代会给我索引(1,2)
.
1> Divakar..:
方法#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
2> Dennis Jaher..:
另一种非常简单的方法:
N=3;
for k=1:N
[1:k-1,k+1:N]
end