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)==[]
2 answers
%# 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})
.
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), : ) = [];
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