How to delete the row that contains specific numbers on the cells
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Samantha Chong
el 12 de En. de 2016
Comentada: Walter Roberson
el 12 de En. de 2016
Hi, I have a matrix of 80x2, each cell contains certain values. My aim is to delete the rows in which both cells in the rows contain the values "-99.9". An example of the first 3 rows is as attached.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/153210/image.jpeg)
0 comentarios
Respuesta aceptada
Walter Roberson
el 12 de En. de 2016
If you have R2015a or later, and if your values are all numeric and the same size, then
to_delete_mask = ismembertol(cell2mat(YourCell), [-99.9, -99.9], 'ByRows', true);
YourCell(to_delete_mask,:) = [];
If you are using an earlier release you will need to test abs() of the difference to -99.9 against a small tolerance.
It may appear that you should be able to just compare your values to -99.9 but you cannot do so because of floating point precision roundoff; what looks like exactly -99.9 is not exactly that because it is not possible to exactly represent the fraction 9/10 in finite binary floating point.
2 comentarios
Walter Roberson
el 12 de En. de 2016
tolerance = 1e-12;
to_delete_mask = all( abs(cell2mat(YourCell) - (-99.9)) < tolerence, 2);
YourCell(to_delete_mask,:) = [];
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrices and Arrays 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!