Почему я получаю следующую ошибку при использовании dir в Matlab? - PullRequest
1 голос
/ 25 мая 2010

Matlab keep дает мне следующее сообщение об ошибке:

??? Ошибка при использовании ==> dir Аргумент должен содержать строку.

Ошибка в ==> Аваль в 15 x = dir (subDirs)

Ниже мои коды:

%MY PROGRAM

clear all;
clc;
close all;

%-----Create Database-----
TrainDB = uigetdir('','Select Database Directory');
TrainFiles = dir(TrainDB);
dirIndex = [TrainFiles.isdir];
[s subDirNumber] = size(dirIndex);
for i = 3:subDirNumber
    subDirs = {TrainFiles(i).name};
    subDirs = strcat(TrainDB,'\',subDirs);
    x = dir(subDirs) %<-------Error Here
end

Что-то не так с кодами? Ваша помощь будет оценена. Я извиняюсь за мой плохой английский.

Ответы [ 3 ]

2 голосов
/ 25 мая 2010

Проблема с этой строкой:

subDirs = {TrainFiles(i).name};

Когда вы strcat на следующей строке, вы strcating две строки с ячейкой, содержащей строку. Результатом в subDirs является ячейка, содержащая строку, которая явно не нравится dir (). Вы можете использовать

subDirs = TrainFiles(i).name;

или

x = dir(subDirs(1))

Я бы порекомендовал первый вариант.

1 голос
/ 25 мая 2010

с subDirs = {TrainFiles(i).name}; вы создаете массив ячеек строк. dir не определено для этого типа. Просто опустите {} вокруг названия

Кстати: ваш код не только перечисляет каталоги, но и все файлы. Проверьте find в атрибуте isdir, чтобы получить только индексы каталога!

1 голос
/ 25 мая 2010

Когда я запускаю ваш код, я получаю сообщение об ошибке:

??? Error using ==> dir
Function is not defined for 'cell' inputs.

Что говорит вам MATLAB, так это то, что когда вы вызываете dir(subDirs) subDirs, это ячейка, а не строка, которую хочет dir. Нечто подобное dir(subDirs{1,1}) будет делать то, что (я думаю) вы хотите. Я оставлю это вам, чтобы переписать ваш код.

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