2010-05-25 67 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以僅獲取目錄的索引!

相關問題