vectorize a loop with product and sum operations
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi all,
I come with a question about vectorization. Suppose I have to run a code equivalent to the following
x = 1:4;
v = rand(1,10);
for i = 1:length(x)
k(i,:) = x(i)*v + x(i)
end
when you have a combined product and sum operations for each iteration.
Basic solution I can come up with is the following:
k = bsxfun(@times,x',v) + repmat(x',1,6); k = x'*v + repmat(x',1,6); % equivalent to before
Does this make any sense in terms of true vectorization? Which is the best way to vector the code? I guess for this case there is a specific "easy" answer while in some other cases more careful mathematical analysis of the formulas should be performed in order to get a "smart" vectorization.
Any comment and answer is more than welcome
댓글 수: 0
채택된 답변
추가 답변 (2개)
Azzi Abdelmalek
2014년 2월 11일
편집: Azzi Abdelmalek
2014년 2월 11일
x = 1:4
v = rand(1,10)
out1=bsxfun(@times,repmat(v,4,1),x')
out=bsxfun(@plus,out1,x')
%OR
x = 1:4
v = rand(1,10)
out2=bsxfun(@(ii,jj) ii.*jj+jj,repmat(v,4,1),x')
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!