在Matlab中从n个向量中选择k个向量

时间:2016-04-21 09:55:42

标签: matlab random-sample

假设有一个包含三个行向量的矩阵

A = [1,2;
     1,3;
     2,3]

我想创建一个新的矩阵B,它从A中重复绘制两个向量,并且有3 ^ 2种可能的组合。一些简单的实现如下:

For i = 1:3
    c = A(i,:);
    for j=1:3
        d = A(j,:);
        B = [c;d];
    end
end

但是,一般来说,如果我需要从k向量中选择n向量,那么编写这种循环的更通用的方法是什么?使用ij,...我猜是很难继续写循环。谢谢!

3 个答案:

答案 0 :(得分:1)

您可以使用randi来挑选k 1:n范围内k = 2; n = size(A,1); rowIdx = randi(n,k) B = A(rowIdx,:) 分布均匀分布的数字

mailgun-js

答案 1 :(得分:1)

对于随机抽样,matlab有randsample

rowIdx = randsample( size(A,1), k, true );
B = A(rowIdx,:);

答案 2 :(得分:0)

感谢之前的所有建议。 最后,我想出了我想要的是重复的排列。来自文件交换的matlab函数permun解决了我的问题。