0

我想从给定一组下标的文件中获取当前加载数据的 C++ 程序中的k随机下标。A

我有一个双值矩阵和一个MxN整数从 0 到 20的矩阵。AMx1B

我怎样才能从条件中获取k随机下标?例如,给定:AB

A = [ 0.25 0.25 0.25 0.25
      0.18 0.18 0.18 0.18 
      0.36 0.36 0.36 0.36 
      0.51 0.51 0.51 0.51 ]

B = [ 0 
      1
      2
      1 ]

我正在尝试从if获取k = 1随机行下标。所以,我正在寻找or 。iAB(i) == 1i == 1i == 4

我尝试首先创建一个逻辑索引:

idx = B == 1;

然后,从A具有该条件的元素中获取如下:

r = A( idx, : );

最后,对rto 进行排列以获得k行:

randperm( size(r) )

但我现在卡住了,因为我不知道如何将排列转换为矩阵A

我也试图理解这个函数[I,J] = ind2sub(siz,IND),但现在不知道如何将下标与随机排列结合起来。此外, 的结果randperm( size(r) )与 的大小有关r

那么,我怎样才能从条件中获取k随机下标?这个想法是使用 C++ 程序中的下标作为输入参数AB

4

1 回答 1

1

您可以获得相关的行号,如下所示:

nrs=1:length(idx);
nrs=nrs(idx);

现在排列它们:

nrs_permidx = randperm(length(nrs))
permuted = nrs(nrs_permidx)

我想你可以从这里拿走它。

于 2013-02-15T18:22:24.893 回答