我有以下形式的两列矩阵:
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行采样)
这可能吗?
答案 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)
代替。