如何称量图像,然后在 MATLAB 中有效地将它们相加



我需要一种体积向量'点积'。问题是这样的:

我有一卷2x3x4,它只不过是一堆4 2x3图像一个接一个。我们称之为卷vol.

我还有一个4x1向量,我们称之为vec

我希望我的输出是每个图像的加权和。因此,我的输出将是一个2x3图像。它将通过采取以下措施形成:

output = vol(:,:,1).*vec(1) + vol(:,:,2).*vec(2) + vol(:,:,3).*vec(3) + vol(:,:,4).*vec(4)

我可以把它放在一个 for 循环中,但我想知道是否有更简单的方法。

谢谢。

permute重新排列vec的维度后,bsxfun的完美情况,让vec扩展到vol的大小,让元素乘法发生,最后使用sum来获取所需的结果 -

sum(bsxfun(@times,vol,permute(vec,[3 2 1])),3)

或者使用矩阵乘法和一些reshape -

reshape(reshape(vol,[],numel(vec))*vec,size(vol,1),[])

相关内容

  • 没有找到相关文章

最新更新