Array multiplication along certain dimension?
이전 댓글 표시
I have a 4-D array with dimensions A = A1 x A2 x A3 x N and a vector with dimensions V = 1 x N. I would like to multiply each element in the array A with vector V along fourth dimension and take a sum along the same dimension to form a matrix B = A1 x A2 x A3. Currently I am using a loop to achieve this, but is there any faster method to achieve the same result? Thanks!
A1 = 3;
A2 = 3;
A3 = 3;
N = 10;
A = ones(A1, A2, A3, N);
V = ones(1, N);
B = NaN(A1, A2, A3);
for i = 1:A1
for j = 1:A2
for k = 1:A3
B(i,j,k) = squeeze(A(i,j,k,:))' * V';
end
end
end
채택된 답변
추가 답변 (1개)
James Tursa
2017년 11월 27일
Another way:
B = sum(bsxfun(@times,A,reshape(V,1,1,1,numel(V))),4);
Or in later versions of MATLAB:
B = sum(A.*reshape(V,1,1,1,numel(V)),4);
카테고리
도움말 센터 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!