2010-05-25 68 views
1

Matlab保持给我以下错误信息:为什么在Matlab中使用dir时出现以下错误?

???错误使用==>目录 参数必须包含一个字符串。

错误==>阿瓦尔在15 X =目录(子目录)

下面是我的代码:

%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 

一些错误的代码?您的帮助将不胜感激。 我很抱歉我的英文不好。

回答

2

问题是这一行:

subDirs = {TrainFiles(i).name}; 

当你strcat的下一行,你的strcat-ING两个字符串包含字符串的单元格。 subDirs中的结果是包含dir()显然不喜欢的字符串的单元格。您可以使用

subDirs = TrainFiles(i).name; 

x = dir(subDirs(1)) 

我建议第一个选项。

+0

哦,是的。我没有注意到它是不是一个字符串,但细胞。谢谢你的帮助Justin。 – nata 2010-05-25 14:45:00

+0

@nata,不客气。 – 2010-05-25 15:12:01

1

当我运行代码我得到的错误信息:

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

什么MATLAB告诉你的是,当你调用dir(subDirs)subDirs是细胞,而不是一个字符串,dir想要的东西。像dir(subDirs{1,1})这样的东西会做你想要的(我想)。我会把它留给你来重写你的代码。

+0

谢谢你的建议,马克 – nata 2010-05-25 14:50:05

1

subDirs = {TrainFiles(i).name};你创建一个细胞阵列的蜇伤。没有为该类型定义dir。只需省略名称

顺便说一句:您的代码不仅列出目录,而且列出所有文件。在isdir属性上检查find以仅获取目录的索引!

相关问题