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
matrixa
具有双值,一个Mx1
matrixB
具有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++程序中的下标作为输入参数,这就是我所要寻找的。谢谢