index rows containing specific value

2 次查看(过去 30 天)
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 个评论
Stephen23
Stephen23 2016-3-26
"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 2016-3-26
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!

请先登录,再进行评论。

采纳的回答

Stephen23
Stephen23 2016-3-26
编辑:Stephen23 2016-3-26
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 个评论
Oliver Kumar
Oliver Kumar 2016-3-26
编辑:Oliver Kumar 2016-3-26
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!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by