Bre*_*dan 46 matlab combinations
不止一次,我需要在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输出,因为对称对将被包含两次.
Lam*_*eek 92
尝试
[p,q] = meshgrid(vec1, vec2);
pairs = [p(:) q(:)];
Run Code Online (Sandbox Code Playgroud)
请参阅MESHGRID文档.虽然这不完全是那个功能的用途,但是如果你眯着眼睛看它很有趣,你所要求的就是它的功能.
efi*_*ida 12
你可以用
a = 1:4;
b = 1:3;
result = combvec(a,b);
result = result'
Run Code Online (Sandbox Code Playgroud)