在MATLAB中向量化矩阵的加权和

玛加

我正在尝试在MATLAB中向量化以下操作,但这让我很困惑。我从经验中学到,通常一种方法,所以我还没有放弃。任何帮助,将不胜感激。

我有一个m行向量的集合,每个行向量的大小nm,排列成m x n矩阵;称呼它X

我也有一个m大小的权重向量w

我想计算由中的向量的自外积形成的矩阵的加权和X

这是使用for循环的MWE

m = 100;
n = 5;

X = rand(m, n);
w = rand(1, m);

S = zeros(n, n);
for i = 1 : m
    S = S + (w(i) * X(i, :)' * X(i, :));
end

S
路易斯·门多

这可能是最快的方法:

S = X' * bsxfun(@times, X, w(:));

你也可以

S = squeeze(sum(bsxfun(@times, ...
    bsxfun(@times, conj(X), permute(X, [1 3 2])), w(:)), 1));

(或在不需要时除去复杂的共轭物)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章