不止一次,我需要在MATLAB中生成所有可能的两个向量对,我用它来做几个代码行的循环,即
vec1 = 1:4;
vec2 = 1:3;
i = 0;
pairs = zeros([4*3 2]);
for val1 = vec1
for val2 = vec2
i = i + 1;
pairs(i,1) = val1;
pairs(i,2) = val2;
end
end
Run Code Online (Sandbox Code Playgroud)
生成......
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
4 1
4 2
4 3
Run Code Online (Sandbox Code Playgroud)
必须有一个更好的方法来做这个更多的MATLAB'esque?
NB nchoosek没有做反向双这是我需要的东西(即2 1和1 2),我不能只是扭转和追加nchoosek输出,因为对称对将被包含两次.
我想生成给定数量的向量的元素的所有可能组合.
例如,对于[1 2],[1 2]和[4 5]我想要生成的元素:
[1 1 4; 1 1 5; 1 2 4; 1 2 5; 2 1 4; 2 1 5; 2 2 4; 2 2 5]
问题是我不知道我需要计算组合的向量的数量.在这种情况下可能有3个,或者可能有10个,我需要一个概括.你能帮我在MATLAB中帮助我吗?是否已有可以执行此任务的预定义功能?
这是我遇到的问题的简化版本.假设我有一个向量
p = [1 5 10]
还有一个
q = [.75 .85 .95].
我想提出以下矩阵:
res = [1,.75; 1,.85; 1,.95; 5,.75; 5,.85; 5,.95; 10,.75; 10,.85; 10,.95].
这也称为笛卡尔积.我怎样才能做到这一点?
非常感谢