Extract values from 3'rd dimmenision with 2D matrix indices
    3 views (last 30 days)
  
       Show older comments
    
Hi,
Say I have 3D matrix (A), and 2D matrix (B) which each element is the third dimmesnions index I want to extract from A:
A = rand(3,3,3);
B = [1 1 1;
       2 2 2;
       1 2 3];
So if A is:
A(:,:,1) =
    0.8147    0.9134    0.2785
    0.9058    0.6324    0.5469
    0.1270    0.0975    0.9575
A(:,:,2) =
    0.9649    0.9572    0.1419
    0.1576    0.4854    0.4218
    0.9706    0.8003    0.9157
A(:,:,3) =
    0.7922    0.0357    0.6787
    0.9595    0.8491    0.7577
    0.6557    0.9340    0.7431
Then the result C would be
C = [0.8147    0.9134    0.2785;
        0.1576    0.4854    0.4218;
        0.1270    0.8003    0.7431];
How can I find C in matlab?
Would very appreciate any help with that
Thanks in Advence!
0 Comments
Accepted Answer
  Daniel
      
 on 23 Oct 2019
        Hi omri,
hope this helps:
mult = zeros(3,3,3);
mult(:,:,:) = reshape([B==1,B==2,B==3],[3,3,3]);
A_1 = A .* mult;
C = sum(A_1,3)
Cheers,
Daniel
3 Comments
  Daniel
      
 on 23 Oct 2019
				In this case I would use a for-loop:
A_1 = zeros(768,1024,72);
for i=1:72
    A_1(:,:,i) = A(:,:,i) .* double(B==i);
end
C = sum(A_1,3);
More Answers (0)
See Also
Categories
				Find more on Matrix Indexing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
