bsxfun to multiply matrix with vector multiple times in for loop --> how faster?

3 次查看(过去 30 天)
I have a 2D matrix of size NxN, and each row I am multiplying with a 1xN vector with bsxfun in a for loop like this:
for k=1:1000
b(k)=mean(bsxfun(@times,tb_filter2d,d(k,:)),2);
end
Is there a way to speed this up? d is of the size 1000xN.
Thank you!!
  4 个评论
James Tursa
James Tursa 2017-3-6
If tb_filter2d is your NxN matrix, how does this even work since the result of the RHS is a vector and you are assigning it to a scalar element location b(k)?

请先登录,再进行评论。

回答(2 个)

Ankita Nargundkar
1. If you are on MATLAB R2016b, you can use operators directly instead of bsxfun. Refer to this example
2. You can use repmat or reshape to optimize. Refer to this link
Something on similar lines, https://www.mathworks.com/matlabcentral/answers/210352-optimize-speed-up-a-big-and-slow-matrix-operation-with-addition-and-bsxfun

Matt J
Matt J 2017-3-10
编辑:Matt J 2017-3-10
This shouldn't require more than a single vector-matrix multiplication,
result =(tb_filter2d/N)*d.';

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by