Multiply two 3D arrays that result would be 4D
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Mantas Vaitonis
am 13 Jul. 2018
Kommentiert: Mantas Vaitonis
am 13 Jul. 2018
Hello to All,
I am trying to work and understand 4D arrays. Lets say I have two 3D gpuArrays a(100x5x5) and b(5x5x5). I would like to multiply them that it would result in 4D array c(100x5x5x5), and example of multiplication:
For j=1:5
For i=1:5
c(:,:,i,j)=a(:,i,j)*b(i,:,j)
end
end
What would be the way to achieve this. I am trying to go for 4D arrays, because I would like to avoid for loops.
2 Kommentare
James Tursa
am 13 Jul. 2018
a(:,i,j) is a 100x1. b(i,:,j) is a 1x5. So the result of a matrix multiply is going to be a 100x5. This would mean you need c(:,:,i,j) instead of c(:,i,j) on the lhs. Is this what you want to do?
Akzeptierte Antwort
James Tursa
am 13 Jul. 2018
Assuming I understand what you are trying to do,
result = permute(a,[1 4 2 3]) .* permute(b,[4 2 1 3]);
or in earlier versions of MATLAB
result = bsxfun(@times,permute(a,[1 4 2 3]) , permute(b,[4 2 1 3]));
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!