首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB :从矩阵中获取k个带条件的随机下标

MATLAB :从矩阵中获取k个带条件的随机下标
EN

Stack Overflow用户
提问于 2013-02-16 02:03:56
回答 1查看 80关注 0票数 0

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

我有一个具有双精度值的MxN矩阵A和一个具有从0到20的整数的Mx1矩阵B

如何从A中获取带有B条件的k随机下标?在示例中,给定:

代码语言:javascript
复制
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 if B(i) == 1中获取随机行下标i。所以我在找i == 1或者i == 4

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

代码语言:javascript
复制
idx = B == 1;

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

代码语言:javascript
复制
r = A( idx, : );

最后,为了得到k行,在r中进行置换:

代码语言:javascript
复制
randperm( size(r) )

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-16 02:22:25

您可以通过如下方式获取相关行号:

代码语言:javascript
复制
nrs=1:length(idx);
nrs=nrs(idx);

现在来对它们进行置换:

代码语言:javascript
复制
nrs_permidx = randperm(length(nrs))
permuted = nrs(nrs_permidx)

我想你可以从这里接手了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14900668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档