Pregunta

¿Cómo puedo detectar celdas vacías en una serie de células? Sé el comando para eliminar la celda vacía es a(1) = [], pero me parece que no puede obtener MATLAB para detectar automáticamente qué celdas están vacías.

Antecedentes: I preasignados una matriz celular utilizando a=cell(1,53). Luego utiliza if exist(filename(i)) y TextScan para comprobar si hay un archivo y leerlo. Como resultado, cuando no existe la filename(i), se produce un celda vacía y nos movemos al siguiente archivo.

Cuando estoy terminado de leer en todos los archivos, me gustaría eliminar las celdas vacías de a. Probé if a(i)==[]

¿Fue útil?

Solución

CELLFUN

%# find empty cells
emptyCells = cellfun(@isempty,a);
%# remove empty cells
a(emptyCells) = [];

Nota: a(i)==[] no funcionará. Si desea saber si la i-ésima célula de la está vacío, usted tiene que utilizar llaves para acceder al contenido de la celda. Además, evalúa ==[] para vaciar, en lugar de true / false, por lo que debe utilizar el comando isempty lugar. En resumen: a(i)==[] debe ser reescrito como isempty(a{i})

.

Otros consejos

respuestas Todos arriba mencionados son incorrectos, ya que en mi caso cuando he usado, que eliminaron las células vacío y luego todos los elementos de mi serie de células situadas en una forma fila en lugar de conservar su forma real. De hecho después de usar este tipo de enfoque de sus elementos de la matriz celular tienden a ser un vector celda de fila.

He encontrado este enfoque que funciona correctamente en mi caso.

Fuente: https://groups.google.com/ foro / #! / tópico comp.softsys.matlab / p3NX0fI6u90

enfoque:

myCellARRAY(all(cellfun(@isempty,myCellARRAY),2), : ) = [];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top