how to find index from matrix in another matrix?

2 visualizaciones (últimos 30 días)
Lilya
Lilya el 26 de Jul. de 2022
Comentada: Fangjun Jiang el 27 de Jul. de 2022
Hi all,
I have two different 3d matrices (A=72*46*2192) and (B=72*46*2192), in which I want to find the indices equal to 4 and 5 from A in B.
The result should be a 3d matrix as well, not linear indices.
Any help would be appreciated.
  2 comentarios
David Hill
David Hill el 26 de Jul. de 2022
I do not understand your question. A simple example might help.
Lilya
Lilya el 27 de Jul. de 2022
Thanks for your responce David.
A = rand(2,3,4);
B=rand(2,3,4);
Matrix A should have elements = 4 and 5.
I want to use the index of those 4 and 5 in A to find the corresponding elements in B.

Iniciar sesión para comentar.

Respuestas (1)

Fangjun Jiang
Fangjun Jiang el 26 de Jul. de 2022
Editada: Fangjun Jiang el 27 de Jul. de 2022
%C is the logical index matrix.
A=zeros(2,3,4);
A(:,:,4)=4;
A(:,3,4)=5;
C=or(A==4,A==5)
C = 2×3×4 logical array
C(:,:,1) = 0 0 0 0 0 0 C(:,:,2) = 0 0 0 0 0 0 C(:,:,3) = 0 0 0 0 0 0 C(:,:,4) = 1 1 1 1 1 1
%To use it to select corresponding elements in B
B=rand(2,3,4);
B_select=B(C)
B_select = 6×1
0.2953 0.0888 0.5716 0.4577 0.5288 0.3675
LinearIndex=find(C);
[SubX,SubY,SubZ]=ind2sub(size(C),LinearIndex)
SubX = 6×1
1 2 1 2 1 2
SubY = 6×1
1 1 2 2 3 3
SubZ = 6×1
4 4 4 4 4 4
  2 comentarios
Lilya
Lilya el 27 de Jul. de 2022
Thank you so much.
but how can i return the index to matrix B?
not a linear result
Fangjun Jiang
Fangjun Jiang el 27 de Jul. de 2022
See the updated answer to understand
  1. Logical index
  2. Linear index
  3. Subscript index

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices 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