MATLAB:从矩阵中获得带条件的k个随机下标 >我想得到 K随机下标,从 A/中使用,它是用一组下标文件中的当前加载数据在C++程序中使用的。

MATLAB:从矩阵中获得带条件的k个随机下标 >我想得到 K随机下标,从 A/中使用,它是用一组下标文件中的当前加载数据在C++程序中使用的。,matlab,random,indexing,Matlab,Random,Indexing,我有一个MxNmatrixa具有双值,一个Mx1matrixB具有0到20的整数 我如何从A中获得k随机下标,并从B中获得条件?例如,给定: 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 ] 我试图从A中获取k=1随机行下标I,如果B(I)==1。所以,我在寻

我有一个
MxN
matrix
a
具有双值,一个
Mx1
matrix
B
具有0到20的整数

我如何从
A
中获得
k
随机下标,并从
B
中获得条件?例如,给定:

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 ]
我试图从
A
中获取
k=1
随机行下标
I
,如果
B(I)==1
。所以,我在寻找
I==1
I==4

我尝试首先创建一个逻辑索引,如下所示:

idx = B == 1;
然后,从
A
获取具有该条件的元素,如下所示:

r = A( idx, : );
最后,在
r
to中进行排列,以获得
k
行:

randperm( size(r) )
但我现在陷入了困境,因为我不知道如何将排列转换为矩阵
A

我还试图理解函数
[I,J]=ind2sub(siz,IND)
,但现在不知道如何将下标与randon置换连接起来。此外,
randperm(size(r))
的结果与
r
的大小有关


那么,我如何从
A
中获得
k
随机下标,而条件是
B
?其思想是在C++程序中使用下标作为输入参数

,可以得到相关的行号如下:

nrs=1:length(idx);
nrs=nrs(idx);
现在来排列它们:

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

我想你可以从这里接受。

我不明白你想做什么。看起来您使用了
B
来选择感兴趣的
A
行,但是接下来呢?是否希望从
a
的这些行中获得一个随机元素?请尝试解释更多。@ SuelZER的想法是使用C++程序中的下标作为输入参数,这就是我所要寻找的。谢谢