Jak wykryć puste komórki w tablicy komórek?

Jak wykryć puste komórki w tablicy komórek? Wiem, że polecenie usunięcia pustej komórki To a(1) = [], ale nie mogę zmusić MATLAB do automatycznego wykrywania, które komórki są puste.

Tło: Wstępnie przydzieliłem tablicę komórek używając a=cell(1,53). Następnie użyłem {[2] } i textscan, aby sprawdzić plik i odczytać go. W rezultacie, gdy filename(i) nie istnieje, powstaje pusta komórka i przechodzimy do następnego pliku.

Kiedy skończę czytać wszystkie pliki, chciałbym usunąć puste komórki a. Próbowałem if a(i)==[]

Author: Amro, 2010-08-04

2 answers

CELLFUN

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

Uwaga: a(i)==[] nie zadziała. Jeśli chcesz wiedzieć, czy i-ta komórka jest pusta, musisz użyć nawiasów klamrowych, aby uzyskać dostęp do zawartości komórki. Również ==[] ocenia na empty, zamiast true/false, powinieneś więc użyć zamiast tego polecenia isempty. W skrócie: a(i)==[] powinno być przepisane jako isempty(a{i}).

 55
Author: Jonas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-03 20:59:20

Wszystkie powyższe odpowiedzi są błędne, ponieważ w moim przypadku, kiedy ich używałem, usuwali puste komórki, a następnie wszystkie elementy tablicy moich komórek umieszczone w sposób rzędowy zamiast zachować ich rzeczywisty kształt. W rzeczywistości po użyciu tego rodzaju podejścia elementy tablicy komórek wydają się być wektorem komórki wiersza.

Znalazłem takie podejście, które działa poprawnie w moim przypadku.

Źródło : https://groups.google.com/forum/#! topic / comp.softsys. matlab/p3NX0fI6u90

Podejście:

myCellARRAY(all(cellfun(@isempty,myCellARRAY),2), : ) = [];
 0
Author: Mahdi Karami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-23 10:49:55