0

我有以下形式的两列矩阵:

 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。

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

这可能吗?

4

2 回答 2

3

find使用and很容易==

>> 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
于 2013-04-22T12:29:12.453 回答
0

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

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)改用。

于 2013-04-22T17:50:36.933 回答