我有n个带有一些数字的向量(n是一个随机数) 我如何确定我拥有的所有数字的所有组合? 例如:
a=0;
for i=1:length(vector1)
for j=1:length(vector2)
for k=1:length(vector3)
... (n times)
a=a+1;
M{a}=[i,j,k,...];
end
end
end
答案 0 :(得分:2)
一种可能性combvec
。此函数为您提供输入矩阵的列向量的所有组合。您可以执行以下操作来获取随机向量中的元素组合。
vector1 = random('Normal', 0, 1, 1, 5);
vector2 = random('Normal', 0, 1, 1, 5);
vector3 = random('Normal', 0, 1, 1, 5);
M = combvec(vector1, vector2, vector3);
M
将是一个3x125矩阵,其中每列是vector1
中的一个元素,vector2
中的一个元素和vector3
中的一个元素
如果你想要n
个向量,其中n
是一个随机数,另一种方法是使用cartesian product来索引向量。
n = randi(5);
all_vectors = random('Normal', 0, 1, n, 5);
indices = mat2cell(repmat([1:5], n, 1), ones(n ,1))';
[x y z] = ndgrid(indices{:});
cartProd = [x(:), y(:), z(:)];
M = all_vectors(cartProd);