Extract values from 3'rd dimmenision with 2D matrix indices

1 visualización (últimos 30 días)
omri r
omri r el 23 de Oct. de 2019
Comentada: omri r el 23 de Oct. de 2019
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!

Respuesta aceptada

Daniel
Daniel el 23 de Oct. de 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 comentarios
Daniel
Daniel el 23 de Oct. de 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);
omri r
omri r el 23 de Oct. de 2019
Works like a charm.
Thank you very much!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by