2012-03-15 23 views
5

Ho una matrice che contiene tutti i file in una particolare directory. Voglio rimuovere tutte le voci di file che terminano con l'estensione .txt. Questo è ciò che ho scrittoremove element from array matlab

function fileList = removeElements(fileArray)  

    for idx = 1:numel(fileArray) 

    if (strfind(fileArray(idx),'.txt') > 0) 
    display('XX'); 
    fileArray(idx) =[]; 
    end  

    end  

end 

ma ottengo un errore

??? Undefined function or method 'gt' for input arguments of type 'cell'. 
    Error in ==> removeElements at 6 
     if(strfind(fileArray(idx),'.bmp') > 0) 

qualcuno può aiutarmi

risposta

1

>0 è sbagliato in questo caso. Utilizzare invece ~isempty(strfind(....)).

2

si può evitare la funzione e per l'anello con la sola linea di costruzione

% strip-out all '.txt' filenames 
newList = oldList(cellfun(@(c)(isempty(strfind('.txt',c))),oldList)); 

La costruzione IsEmpty() restituisce true se il nome del file non non includono '.txt'. La costruzione oldList (...) restituisce un array di celle di elementi di oldList per i quali la costruzione isempty restituisce true.