2013-01-20 181 views
2

我想所有目錄中的文件保存爲一個字符串數組,像這樣:MATLAB數組賦值

files = {'hello.gdf'; 'hello2.gdf'...; ... 'etc.gdf'}

因爲我有很多目錄,我要自動執行此操作。這是我的代碼:

gdffiles = dir(fullfile('D:', 'subject', '01', '*.gdf')) 
for i=1:size(gdffiles) 
    files(i) = gdffiles(i).name; 
end 

我要分配給files的GDF文件的名稱中,但我得到這個消息:

??? Subscripted assignment dimension mismatch.

Error in ==> getFiles at 3 files(i) = gdffiles(i).name;

我在做什麼錯誤?謝謝!

回答

1

的錯誤原因:

你嘗試分配filesi個地方的字符串(char陣列)gdffiles(i).name。但是,您正在使用數組元素分配(圓括號())。因此,您會收到錯誤消息:您只能使用files(i)分配單個char

可能的解決方案:

  1. 你應該使用大括號分配給files - 因爲filescell數組:

    files{i} = gdffiles(i).name; 
    
  2. 可以達到同樣的效果,而不通過環路:

    files = { gdffiles(:).name }; 
    
+0

非常明確和幫助,謝謝! –

1

檢查該解決方案

path  = fullfile('D:', 'subject', '01', '*.gdf'); 
files  = dir(path); 
files  = struct2cell(files); 
files  = files(1, 1:end); 
+0

哦,是的,你是對的:d,謝謝:) –

0

你有沒有嘗試過這樣的:

ListOfAllFiles = ls('*.gif') 

希望它可以幫助