如何让两个数组的元素的组合吗?

338(30天)
这就跟你问声好!我需要生成两个数组的元素的组合与不同的长度。例如,如果
一个= (1、2、3);B = (4、5);
我希望得到所有从两个数组元素的组合
4 C = [1; 1 5; 2 4; 2 5; 3 4; 3 5];
我想是什么
[m, n] = meshgrid (A, B);
[C (: 1), C(:, 2)] =交易(重塑(m,[], 1),重塑(n, [], 1));
有更直接的方式来完成这个吗?
进一步,如果我有三个或更多的数组合并,我该怎么办?

接受的答案

Stephen23
Stephen23 2018年12月3日
编辑:Stephen23 2018年12月3日
> > [m, n] = ndgrid (A, B);
> > Z = [m (:), n (:))
Z =
1 - 4
2 4
3 4
1 - 5
2个5
3个5
”,进一步说,如果我有三个或更多的数组合并,我该怎么办?”
然后在一个单元数组:
C = {A, B,};
D = C;
[D {:}] = ndgrid (C {:});
Z = cell2mat (cellfun (@ (m) m (:), D,“大学”,0))
,记住,是有限度的你的电脑有多少内存。

更多的答案(2)

杰夫•米勒
杰夫•米勒 2018年12月3日
你可能喜欢 allcomb 在文件交换:
例如:
> > = (1、2、3);B = (4、5);
> > C = allcomb (A, B)
C =
1 - 4
1 - 5
2 4
2个5
3 4
3个5
1评论
卷边
卷边 2018年12月11日
编辑:卷边 2018年12月11日
不错的选择!和上面这段代码执行速度比(MATLAB R2016a)虽然都采用类似的方法。谢谢!

登录置评。


迈克裘槎
迈克裘槎 2023年4月4日
编辑:迈克裘槎 2023年4月4日
> > = (1、2、3);B = (4、5);
> > C =组合(A, B)
C =
6×2表
一个B
__
1 - 4
1 - 5
2 4
2个5
3 4
3个5
结果是一个表。当所有数据类型兼容(一样)你可以得到这样的矩阵
> > C.Variables
ans =
1 - 4
1 - 5
2 4
2个5
3 4
3个5

类别

找到更多的在运营商和基本操作帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的