Using find in a 4D matrix

29 visualizaciones (últimos 30 días)
Thaís Lobato Sarmento
Thaís Lobato Sarmento el 5 de Ag. de 2019
Comentada: Thaís Lobato Sarmento el 6 de Ag. de 2019
I have multiple 9 x 96 x 14 x 1356 matrixes. I want to find when one of them meets a certain criteria and then select the same indexes on the other matrixes.
I did this and looked liked it worked...
idx = find(neutral<24.5);
[r, c, v, l] = ind2sub(size(neutral),idx);
With this, I get a r, c, v, l with 4411652 x 1 each, instead of a 4D logical matrix, which was what I was expecting (like what happens with a 2D matrix when using find).
I tried using those indexes to cut my other variables, but I could't do it.
temp_AT = temp(r,c,v,l);
Thanks!
  6 comentarios
Adam Danz
Adam Danz el 6 de Ag. de 2019
When you remove or isolate elements from an array, they no longer have the same shape unless you're indexing all of the data. Here's a simple example.
d = [2, 3, 2;
5, 2, 2];
idx = d == 2; %same shape as d
d(idx) % a vector with 4 elements, not 6!
If you're trying to get rid of data and maintain the shape of the data, you can replace unwanted data with NaNs (or any other value).
d = [2, 3, 2;
5, 2, 2];
idx = d == 2; %same shape as d
d(~idx) = NaN; % same shape as d!
Thaís Lobato Sarmento
Thaís Lobato Sarmento el 6 de Ag. de 2019
Thanks, this worked!

Iniciar sesión para comentar.

Respuestas (1)

Walter Roberson
Walter Roberson el 5 de Ag. de 2019
neutral<24.5
is the 4d logical matrix. No need for find()
  2 comentarios
Adam Danz
Adam Danz el 5 de Ag. de 2019
+1 (moving my inferior answer here)
idx = find(neutral < 24.5);
logIdx = false(size(neutral)); %Logical index (default: all false)
logIdx(idx) = true; %Set 'idx' indices as true
Thaís Lobato Sarmento
Thaís Lobato Sarmento el 6 de Ag. de 2019
Thank you! This also worked!

Iniciar sesión para comentar.

Categorías

Más información sobre Matrix Indexing 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