【问题标题】:Unique products of array elements数组元素的唯一乘积
【发布时间】:2019-02-20 17:53:42
【问题描述】:

我有一个数组,例如[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

【问题讨论】:

  • 我们可以看看你的代码吗?
  • 当然.. prime_factor=[3 5 7 11]; for i=1:length(prime_factor) pfm=unique([pfm cumprod(circshift(prime_factor,i,2))]) endfor
  • @RTn 如果将其编辑到原始问题中,则可以使用正确的代码格式并使其更易于阅读。

标签: matlab cartesian-product


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多