Borrar filtros
Borrar filtros

index rows containing specific value

2 visualizaciones (últimos 30 días)
Oliver Kumar
Oliver Kumar el 26 de Mzo. de 2016
Editada: Oliver Kumar el 26 de Mzo. de 2016
Hello everyone
I've a cell 352X79. The first row contains the marker names. The first column contains the filenames.
Now i need to find all the NaN values and write the row containing the NaN to a new variable X, so I have all colums with NaN values in one variable.
Or is it even possible to get the filename and the names of the NaN marker into the new variable? So it woul look like X(1,1) = filname, X(1,2) = markar_Name etc.
Thanks for your help!
  4 comentarios
Stephen23
Stephen23 el 26 de Mzo. de 2016
"I've a cell 352X79. The first row contains the marker names. The first column contains the filenames."
You would be much better off using a table.
Alternatively you could use a simple numeric array and two cell arrays (See my answer).
Oliver Kumar
Oliver Kumar el 26 de Mzo. de 2016
Hi Stephen
Ok, I have all the nummeric data also as a matrix. Column 1 has the numbers for marker1, Column2 for marker2, etc. So I could build a table out of that data. And I have a Cell with all the VPN.
What would be the next step after I've build the table? Thank you!

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 26 de Mzo. de 2016
Editada: Stephen23 el 26 de Mzo. de 2016
Using a cell array is a total waste of MATLAB's abilites for processing numeric arrays quickly and efficiently. You would be much better off storing the data in three arrays (col-names, row-names, numeric data), or (even better) in a table. Whatever method you use for processing a cell array of mixed data is going to be much more complicated that if you simply stored your numeric data in a numeric array.
Here is an example showing how simple this task can be when the data is stored in a simple numeric array:
colC = {'marker1',' marker2'};
rowC = {'testvpn1','testvpn2','testvpn3'};
mat = [5,NaN;1,0;6,NaN] % your data
[idxR,idxC] = find(isnan(mat))
[colC(idxC),rowC(idxR)]
  1 comentario
Oliver Kumar
Oliver Kumar el 26 de Mzo. de 2016
Editada: Oliver Kumar el 26 de Mzo. de 2016
hey, thanks a lot! I just changed the last line to [rowC(idxR);colC(idxC)], so I geht my VPN names in the first row.
colC = marker'; rowC = filenames_all'; mat = how_many_NaNs; [idxR,idxC] = find(isnan(mat)); NaN_mark = [rowC(idxR);colC(idxC)];
Now I get the error: Index exceeds matrix dimensions.
Error in NaN_marker (line 5) NaN_mark = [rowC(idxR);colC(idxC)]
I think because there are sometimes more then one NaN values for one filename.
The code worked if there is only one NaN value.
idxR and idxC are 215x1
Edit: It works! Thank you!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

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

Community Treasure Hunt

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

Start Hunting!

Translated by