Filter löschen
Filter löschen

index rows containing specific value

2 Ansichten (letzte 30 Tage)
Oliver Kumar
Oliver Kumar am 26 Mär. 2016
Bearbeitet: Oliver Kumar am 26 Mär. 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 Kommentare
Stephen23
Stephen23 am 26 Mär. 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 am 26 Mär. 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!

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Stephen23
Stephen23 am 26 Mär. 2016
Bearbeitet: Stephen23 am 26 Mär. 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 Kommentar
Oliver Kumar
Oliver Kumar am 26 Mär. 2016
Bearbeitet: Oliver Kumar am 26 Mär. 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!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by