vectorize a block matrix calculation

1 次查看(过去 30 天)
Dear;
I want calculate a big matrix composed of blocks, for that I use the following code:
k=length(a); % Long vector
n=size(xx,1); % 2D or 3D matrix always the same
TP=repmat(zeros(size(xx),k,1); % Big matriz composed by blocks
for i=1:k
TP((i-1)*n+1:i*n,:)=a(i)*xx; % Block i of TP matrix
end
Is there any way to vectorize this code and speed up the calculation Many thanks;

采纳的回答

Matt J
Matt J 2017-4-28
TP=kron(a(:),xx);
  3 个评论
Andrei Bobrov
Andrei Bobrov 2017-4-28
TP = reshape(bsxfun(@plus,xx',reshape(a,1,1,[])),size(x,2),[])'
Matt J
Matt J 2017-4-28
编辑:Matt J 2017-4-28
You could also use my attached tensorfun() utility.
TP=tensorfun(@plus,a(:),xx);
It allows you to do similar things for any block structure and any bi-operand operation (@plus, @minus, etc...) supported by bsxfun.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Block Libraries 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by