我正在尝试在MATLAB中向量化以下操作,但这让我很困惑。我从经验中学到,通常有一种方法,所以我还没有放弃。任何帮助,将不胜感激。
我有一个m
行向量的集合,每个行向量的大小n
为m,排列成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] 删除。
我来说两句