数组元素的独特产品

时间:2019-02-20 17:53:42

标签: matlab cartesian-product

我有一个数组,例如[3 5 7 11]。我想找出这些元素的唯一倍数,即

  1. 成对元素的乘积-15,21,33,35,55,77

  2. 三个元素的乘积-105、385、231

  3. 四个元素的乘积-1055。

目前,我对如何高效地处理它感到困惑,因此当我将其扩展到数组中的大量元素时,我不会爆炸内存并杀死计算机。

我当前的代码:

prime_factor=[3 5 7 11]; 
for i=1:length(prime_factor) 
    pfm=unique([pfm cumprod(circshift(prime_factor,i,2))]) 
endfor

1 个答案:

答案 0 :(得分:2)

魔术函数为nchooseknchoosek(v,k)从输入向量k中产生v个元素的所有组合。只需沿着输出的行计算乘积即可获得所需的结果:

v = [3 5 7 11];
prod(nchoosek(v,2),2)

收益:

ans =
    15
    21
    33
    35
    55
    77
prod(nchoosek(V,3),2)

产量:

ans =
   105
   165
   231
   385
prod(nchoosek(V,4),2)

产量:

ans =
        1155