【发布时间】:2015-11-01 20:28:43
【问题描述】:
A是一个3D N*N*L矩阵,x是一个N*1向量,我需要对其进行如下操作:
for i=1:L
res(i)=x'*squeeze(A(:,:,i))*x
end
我希望使用最有效的矢量化方法而不是for 循环。请大家给我一些建议?
【问题讨论】:
-
我建议更具体一点:您不需要矩阵向量乘法,而是计算二次形式。但它可能只对我有影响:)
-
我现在不能尝试,但你可能会喜欢
sum(sum(bsxfun(@times,permute(bsxfun(@times,permute(A,[3 1 2]),reshape(x,[1 1 N])),[1 3 2]),reshape(x,[1 1 N])),2),2) -
@J.Andrew 我已将您的问题退回到以前的状态。这是因为您更新了您的问题,同时给出了两个答案,包括您接受为“有帮助”的答案已过时。如果您有新问题,请打开一个新问题,而不是扩展这个问题。
标签: performance matlab matrix vectorization matrix-multiplication