【问题标题】:Sample from matrix and record matrix index in MatlabMatlab中的矩阵样本和记录矩阵索引
【发布时间】:2013-04-23 01:50:36
【问题描述】:

我有一个如下形式的两列矩阵:

 1.   1  1 
 2.   1  1
 3.   1  2
 4.   1  2
 5.   2  2
 6.   2  2
 7.   3  2
 8.   3  2
 9.   3  3 
 10.  4  3
 11.  4  4

我想使用 randsample() 从第一列中抽取一个数字。

假设结果是 2。

我想知道样本是从哪个 ROW 提取的? (在这种情况下,它可能是从第 5 行或第 6 行采样的)

这可能吗?

【问题讨论】:

  • 你为什么不得到一个从 1 到 11 的随机数,并将其用作从矩阵的第一列获取值的索引?

标签: matlab


【解决方案1】:

find== 很容易:

>> A = [
    1  1
    1  1
    1  2
    1  2
    2  2
    2  2
    3  2
    3  2
    3  3
    4  3
    4  4];

>> R = randsample(4,1)
>> find(A(:,1) == R)

R =
     4
ans =
    10
    11

或者,正如 igor milla 所说,

>> I = randi(11)
>> A(I, :)

I =
     9
ans =
     3     3

【讨论】:

  • 我会对索引进行抽样,或者保留逻辑索引,从而避免发现绝对必要的错误。
【解决方案2】:

如果您只需要对一个值进行采样,@igor milla 给出的解决方案就可以了。但如果您想使用randsample 给出的选项,那么我建议您对列号进行抽样,而不是直接抽样。

A = rand(11,2); %suppose this is your matrix
k = 1; %This is the size of your desired sample
mysampleid = randsample(size(A,1),k)
mysample = A(mysampleid,:)

现在mysampleid 包含列数,mysample 包含您采样的行。 如果您只想对第一列进行采样,您可以改用A(mysampleid,1)

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 2018-03-26
    • 2015-07-10
    • 2018-09-09
    • 1970-01-01
    • 2014-05-12
    • 2013-09-13
    • 2014-06-08
    相关资源
    最近更新 更多