удалить элемент из массива matlab - PullRequest
6 голосов
/ 15 марта 2012

У меня есть массив, который содержит все файлы в определенном каталоге. Я хочу удалить все записи файла, которые заканчиваются расширением .txt. Это то, что я написал

function fileList = removeElements(fileArray)    

    for idx = 1:numel(fileArray)

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

    end      

end

но я получаю ошибку

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

Может кто-нибудь, пожалуйста, помогите мне

Ответы [ 2 ]

3 голосов
/ 15 марта 2012

Вы можете избежать функции и цикла for с однострочной конструкцией

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

Конструкция isempty () возвращает true, если имя файла не включает '.txt'.Конструкция oldList (...) возвращает массив ячеек oldList, для которого конструкция isempty возвращает true.

2 голосов
/ 15 марта 2012

>0 неверно в этом случае.Вместо этого используйте ~isempty(strfind(....)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...