gpt4 book ai didi

algorithm - 在 2 个数组中生成所有可能的元素组合的有效方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:08 25 4
gpt4 key购买 nike

我有一个数组 A=[1,2] 和 B=[5,6]
我想生成一个数组 C=[1*1,2*2,5*5,6*6,1*2,1*5,1*6,2*5,2*6,5*6]< br/>这是所有可能的组合(ab 等于 ba,因此只有其中 1 个应该在结果 C 数组中)。

matlab 是否有我可以用来实现此目的的内置函数?
你能帮帮我吗?

最佳答案

bsxfun 的两种方法可以在这里提出建议。

方法 #1

%// Form a concatenated array
AB = [A(:) ; B(:)]

%// Get pairwise multiplications between all elements
allvals = bsxfun(@times,AB,AB.') %//'

%// Discard the repeated ones for the final output
C = allvals(bsxfun(@le,[1:numel(AB)]',1:numel(AB)))

方法 #2

%// Form a concatenated array
AB = [A(:) ; B(:)]

%// Get "non-repeated" pairwise indices
[Y,X] = find(bsxfun(@le,[1:numel(AB)]',1:numel(AB))) %//'

%// Elementwise multiplications across all such pairs for final output
C = AB(X).*AB(Y)

第二个基于Fastest solution to list all pairs of n integers并且比第一种方法更少占用内存。

关于algorithm - 在 2 个数组中生成所有可能的元素组合的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29205281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com