假设有一个包含三个行向量的矩阵
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
向量,那么编写这种循环的更通用的方法是什么?使用i
,j
,...我猜是很难继续写循环。谢谢!
答案 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解决了我的问题。