我在 Matlab 中有一个与此类似的矩阵,除了有数千行:
A =
5 6 7 8
6 1 2 3
5 1 4 8
5 2 3 7
5 8 7 2
6 1 3 8
5 2 1 6
6 3 2 1
我想得到一个矩阵,它有三个随机行,第一列有一个“5”,三个随机行第一列有一个“6”。所以在这种情况下,输出矩阵看起来像这样:
A =
5 6 7 8
6 1 2 3
5 2 3 7
6 1 3 8
5 2 1 6
6 3 2 1
这些行必须是随机的,而不仅仅是原始矩阵中的前三个或后三个。我不太确定如何开始,所以任何帮助将不胜感激。
编辑:这是我迄今为止最成功的尝试。我在第一列中找到了所有带有“5”的行:
BLocation = find(A(:,1) == 5);
B = A(BLocation,:);
然后我试图像这样使用'randsample'从B中找到三个随机行:
C = randsample(B,3);
但 'randsample' 不适用于矩阵。
我也认为这可以更有效地完成。