Domanda

Come faccio a rilevare le celle vuote in un array di celle? So che il comando per rimuovere la cella vuota è a(1) = [], ma io non riesco a ottenere MATLAB per rilevare automaticamente quali celle sono vuote.

Sfondo: I preassegnate una matrice di celle utilizzando a=cell(1,53). Poi ho usato if exist(filename(i)) e textscan per controllare un file, e leggere in. Di conseguenza, quando il filename(i) non esiste, un vuoto risultati cellulari e passiamo il file successivo.

Quando sono finito di leggere in tutti i file, vorrei eliminare le celle vuote di a. Ho provato if a(i)==[]

È stato utile?

Soluzione

CELLFUN

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

Nota: a(i)==[] non funzionerà. Se volete sapere se l'i-esimo cella è vuota, è necessario utilizzare parentesi graffe per accedere al contenuto della cella. Inoltre, valuta ==[] a vuoto, invece di true / false, così si dovrebbe usare il comando isempty invece. In breve: a(i)==[] dovrebbe essere riscritta come isempty(a{i})

.

Altri suggerimenti

risposte Tutti sopra menzionati non sono corretti, perché nel mio caso quando ho usato loro, hanno tolto celle vuote e quindi tutti gli elementi della matrice di celle mia situati in maniera riga invece di mantenere la loro forma attuale. Infatti dopo aver usato questo tipo di approccio gli elementi di matrice cellulare tendono ad essere un vettore cella della riga.

Ho trovato questo approccio che funziona correttamente nel mio caso.

fonte: https://groups.google.com/ forum / #! argomento / comp.softsys.matlab / p3NX0fI6u90

approccio:

myCellARRAY(all(cellfun(@isempty,myCellARRAY),2), : ) = [];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top