【问题标题】:How to select different row in a matrix in Matlab every time?如何每次在Matlab中选择矩阵中的不同行?
【发布时间】:2015-08-22 13:23:45
【问题描述】:

我想创建一个矩阵,其中包含从另一个矩阵中选择的不同行。

例如,我有一个10x3 矩阵A

A =

 1     2     3
 4     5     6
 7     8     9
10    11    12
13    14    15
16    17    18
19    20    21
22    23    24
25    26    27
28    29    30

现在我想在迭代过程中从A 创建一个大小为2 X 3 的新矩阵B,使得矩阵B 在每次迭代中应该包含不同的行(最大迭代= 5)

我的伪代码:

for j=1:5
  create matrix 'B' by selecting 2 rows randomly from 'A', which should be different
end

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    您可以使用randperm 将行随机打乱,然后在每次迭代中依次取两行。

    iterations = 4;
    permu = randperm(size(A,1));
    out = A(permu(1:iterations*2),:);
    
    for ii = 1:iterations
        B = out(2*ii - 1:2*ii,:)
    end
    

    结果:

    B =
    22    23    24
    25    26    27
    
    B =
     1     2     3
    13    14    15
    
    B =
    19    20    21
    16    17    18
    
    B =
     7     8     9
    10    11    12
    

    【讨论】:

    • 感谢您的回复....实际上我不想选择最大可能的组合,即总数。迭代次数也可能少于 5 次。但我想要两件事:(1)新创建的矩阵 B 不包含 A 的公共行,(2)在每次迭代中 B 的行与 B 的前一行不匹配
    • @PrateekSinghal 已编辑可变迭代次数。只需更改 iterations 变量的值即可。
    猜你喜欢
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 2023-03-09
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    相关资源
    最近更新 更多