2013-08-07 1 views
-1

я наткнулся на следующие строки в MATLAB:Как читать эту строку в MATLAB?

m = dir(fullfile(dataset,'*.png')); 
m = {m(~[m.isdir]).name}; 

Я понимаю, что первая линия пытается получить .png файлы из каталога. Но, что вторая попытка пытается выполнить? isdir, похоже, определяет, что вход является каталогом. Это то, что я новичок в этой части. Но что это за попытка?

Спасибо.

+0

, пожалуйста, подумайте о принятии ответа или обновлении вашего вопроса, чтобы люди знали, что решение найдено, чтобы они могли использовать это в будущем. – MZimmerman6

ответ

3

Вторая строка получает все файлы, которые не каталог, а затем получить соответствующие имена и хранить их в массив ячеек

  • m.isdir указывает, если это папка или нет
    • возвращает 1 если это так, 0, если нет.
  • ~[m.isdir] будет указать, какие из значений, возвращаемых из isdir был 0.
  • m(~[m.isdir]) захватывает все объекты в м определяется логической индексации сделано выше
  • m(~[m.isdir]).name получает имена всех из них
  • {m(~[m.isdir]).name} хранит их все в клеточном массиве

Надеюсь, это пошаговое руководство поможет.

Хотя я не уверен, почему нужна вторая строка, потому что fullfile(dataset,'*.png') должен возвращать только пути, которые заканчиваются в .png, который не будет папкой, я думаю, это хорошо проверить.

+1

Я согласен, что это то, что делает код. Однако я не уверен, почему он там, потому что предыдущая строка кода должна определять 'm', используя только .png-файлы. –

+0

Я только что отредактировал свой опубликованный текст, указав то же самое. Я думаю, вы могли бы технически быть хитрыми и назвать папку как «something.png», но я не вижу такой ситуации, когда-либо имевшей место – MZimmerman6

Смежные вопросы