You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Octave中数组按向量元素逐元素幂次求和的向量化实现方案

最优实现方案

R2016b及以上版本(推荐)

直接利用Matlab原生的隐式广播特性,代码仅有一行,大幅简化原有实现:

sum(A .^ reshape(p, [ones(1,ndims(A)), length(p)]), ndims(A)+1)

实现逻辑说明

  • 首先把向量p重塑为维度为[1,1,...,length(p)]的高维数组,新增维度和A的原有维度完全不重叠
  • 隐式广播会自动将A和重塑后的p扩展到维度匹配的状态,无需手动调用repmat做重复复制
  • 沿新增的最后一维求和后,输出结果的尺寸和输入A完全一致,支持任意维度的A和任意长度的p,全向量化操作无循环

示例验证

用你给出的测试用例验证:
输入:

A = [0 1 ; 2 3];
p = [2 3];

运行上述代码得到的结果为:

0     2
    12    36

和预期输出完全匹配。

R2016b之前版本兼容方案

如果需要兼容不支持隐式广播的旧版Matlab,用bsxfun实现,同样比双层repmat写法简洁很多:

sum(bsxfun(@power, A, reshape(p, [ones(1,ndims(A)), length(p)])), ndims(A)+1)

内容的提问来源于stack exchange,提问作者smcmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:36:03