来自Matlab中矩阵和记录矩阵索引的样本

时间:2013-04-22 12:15:39

标签: matlab

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

 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

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

假设结果为2.

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

这可能吗?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

如果您只需要对一个值进行采样,则@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)代替。