i want to delete cells that contain 0's

1 visualización (últimos 30 días)
Ioannis Vourvachakis
Ioannis Vourvachakis el 24 de Nov. de 2021
Comentada: Ioannis Vourvachakis el 24 de Nov. de 2021
In a cell array, there are rows of cells that contain 0's. I want to delete these rows.
Thank you.

Respuesta aceptada

Kevin Holly
Kevin Holly el 24 de Nov. de 2021
Assuming the values in cell array are numeric:
cellarray = {34 , 23, 4, 123, 0 ,423, 4312;34 , 23, 4, 123, 5 ,423, 4312;34 , 0, 0, 123, 5 ,423, 4312;34 , 73, 5, 13, 7 ,23, 43;34 , 22, 3, 125, 5 ,423, 4312}
cellarray = 5×7 cell array
{[34]} {[23]} {[4]} {[123]} {[0]} {[423]} {[4312]} {[34]} {[23]} {[4]} {[123]} {[5]} {[423]} {[4312]} {[34]} {[ 0]} {[0]} {[123]} {[5]} {[423]} {[4312]} {[34]} {[73]} {[5]} {[ 13]} {[7]} {[ 23]} {[ 43]} {[34]} {[22]} {[3]} {[125]} {[5]} {[423]} {[4312]}
out = cellfun(@(x) find(x == 0),cellarray,'un',0);
idx = cellfun('isempty',out);
[row, column] = find(~idx);
cellarray(row,:)=[]
cellarray = 3×7 cell array
{[34]} {[23]} {[4]} {[123]} {[5]} {[423]} {[4312]} {[34]} {[73]} {[5]} {[ 13]} {[7]} {[ 23]} {[ 43]} {[34]} {[22]} {[3]} {[125]} {[5]} {[423]} {[4312]}
  3 comentarios
Kevin Holly
Kevin Holly el 24 de Nov. de 2021
cellarray = {34 , 23, "ok", 123, 0 ,423, 4312;34 , 23, 4, 123, 5 ,"Words", 4312;34 , 0, 0, 123, 5 ,423, 4312;34 , 73, 5, 13, 7 ,"23", 43;34 , 22, 3, "125", 5 ,423, 4312}
cellarray = 5×7 cell array
{[34]} {[23]} {["ok"]} {[ 123]} {[0]} {[ 423]} {[4312]} {[34]} {[23]} {[ 4]} {[ 123]} {[5]} {["Words"]} {[4312]} {[34]} {[ 0]} {[ 0]} {[ 123]} {[5]} {[ 423]} {[4312]} {[34]} {[73]} {[ 5]} {[ 13]} {[7]} {["23" ]} {[ 43]} {[34]} {[22]} {[ 3]} {["125"]} {[5]} {[ 423]} {[4312]}
out = cellfun(@(x) isnumeric(x) && x==0 ,cellarray,'un',0)
out = 5×7 cell array
{[0]} {[0]} {[0]} {[0]} {[1]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[1]} {[1]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]} {[0]}
[row, column] = find(cell2mat(out))
row = 3×1
3 3 1
column = 3×1
2 3 5
cellarray(row,:)=[]
cellarray = 3×7 cell array
{[34]} {[23]} {[4]} {[ 123]} {[5]} {["Words"]} {[4312]} {[34]} {[73]} {[5]} {[ 13]} {[7]} {["23" ]} {[ 43]} {[34]} {[22]} {[3]} {["125"]} {[5]} {[ 423]} {[4312]}

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by