sirve que para opposite isempty cellfun matlab cell-array is-empty

matlab - que - ¿Cómo puedo detectar celdas vacías en una matriz de celdas?



isempty vba (2)

Todas las respuestas mencionadas son incorrectas, porque en mi caso cuando las usé, eliminaron las celdas vacías y luego todos los elementos de mi matriz de celdas situados en forma de fila en lugar de preservar su forma real. De hecho, después de usar este tipo de enfoque, los elementos del conjunto de celdas tienden a ser un vector de celda fila.

Encontré este enfoque que funciona correctamente en mi caso.

fuente: https://groups.google.com/forum/#!topic/comp.softsys.matlab/p3NX0fI6u90

enfoque:

myCellARRAY(all(cellfun(@isempty,myCellARRAY),2), : ) = [];

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

Antecedentes: preasigné una matriz de células usando a=cell(1,53) . Luego utilicé if exist(filename(i)) y un texto para verificar un archivo y leerlo. Como resultado, cuando el filename(i) no existe, se genera una celda vacía y pasamos al siguiente archivo.

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


Use CELLFUN

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

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