相关疑难解决方法(0)

如何使用矢量化代码在MATLAB中从两个向量生成所有对?

不止一次,我需要在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 11 2),我不能只是扭转和追加nchoosek输出,因为对称对将被包含两次.

matlab combinations

46
推荐指数
2
解决办法
5万
查看次数

生成一些向量元素的所有可能组合(笛卡尔积)

我想生成给定数量的向量的元素的所有可能组合.

例如,对于[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中帮助我吗?是否已有可以执行此任务的预定义功能?

matlab combinatorics cartesian-product

33
推荐指数
3
解决办法
5万
查看次数

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].

这也称为笛卡尔积.我怎样才能做到这一点?

非常感谢

matlab matrix cartesian-product

16
推荐指数
2
解决办法
2万
查看次数