为什么我在Matlab中使用dir时出现以下错误?

时间:2010-05-25 14:18:25

标签: matlab

Matlab继续给我以下错误消息:

???使用==>时出错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 个答案:

答案 0 :(得分:2)

问题在于这一行:

subDirs = {TrainFiles(i).name};

当您在下一行上进行strcat时,您正在使用包含字符串的单元格来划分两个字符串。 subDirs中的结果是一个包含dir()显然不喜欢的字符串的单元格。你可以使用

subDirs = TrainFiles(i).name;

x = dir(subDirs(1))

我会推荐第一个选项。

答案 1 :(得分:1)

当我运行您的代码时,我收到错误消息:

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

MATLAB告诉你的是,当你致电dir(subDirs)时,subDirs是一个单元而不是dir想要的字符串。像dir(subDirs{1,1})之类的东西会做你想要的(我想)。我会留给你重写你的代码。

答案 2 :(得分:1)

使用subDirs = {TrainFiles(i).name};创建一个stings的单元格数组。未为该类型定义dir。只需省略名称

周围的{}即可

BTW:您的代码不仅列出目录,还列出所有文件。检查find属性上的isdir以仅获取目录的索引!