extract multiple submatrices from a large matrix based on specific criterion

I have a Matrix A (162301x13 double) which first column contains 625 different ID numbers (they repeat that is why i have 162301 rows) and the other columns contain SL values for 12 different frequency values.
i need to extract submatrices from this large matrix for each unique ID value. For example (see attached), ID 23 contains 8 rows of values for the SLs columns and i want to extract this submatrix from the large matrix.
Any ideas?
Thanks

 Respuesta aceptada

madhan ravi
madhan ravi el 14 de Mayo de 2019
Editada: madhan ravi el 14 de Mayo de 2019
T=readtable('mydatfile.csv')% Note here it’s just your filename;
Wanted = T(T.id==23,:) %

9 comentarios

Sorry, your answer helped me! thanks a lot
Since it would be too time consuming if i change the ID number manually, do you know an alternative way to do it? like a loop or something?
Those are the IDs that I have (attached)
u = unique(T.id);
for k = 1:u
Wanted{k} = T{T.id==23,:};
end
When i use this code, matlab stores only T.id==23 k times and that is not what i need. i need to have k number of submatrices for each ID number at the end
u = unique(T.id);
for k = 1:numel(u)
Wanted{k} = T{T.id==u(k),:};
end
Now it works!
Thank you a lot
Just one last question, how do I conver this multiple cell arrays (1x379) in multiple matrices?
cat(3,Wanted{:}) % works only if each cell has same number of rows otherwise keeping it this way is the only option.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Operators and Elementary Operations en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 14 de Mayo de 2019

Comentada:

el 14 de Mayo de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by