2015-12-29 28 views
2

我試圖將目錄中的文件名追加到列表中以供以後處理。下面的代碼不起作用。創建一個列表並將文件名添加到此列表中

files = dir(fullfile(home,'*.csv')); 
files = {files.name}';      %'# file names 

symbolsList = []; 

filedata = cell(numel(files),1);    %# store file contents 
for i=1:numel(files) 
    [pathstr,name,ext] = fileparts(files{i}); 
    symbolsList(end + 1) = name; % THIS GIVES ERROR 
end 

回答

3

在您的代碼中,symbolsList將被解釋爲一個字符數組。錯誤出現的語句被解釋爲附加單個字符symbolsList。您可能會得到一個下標對齊不匹配,因爲名稱最可能會有多個字符,但您正試圖將許多字符合併到該字符數組中的單個點中。這可能不是你想要的。

你希望每個「空間」都有一個名字。因爲每個名字很可能不會有相同的字符數量,你應該使用一個單元陣列,而不是:

files = dir(fullfile(home,'*.csv')); 
files = {files.name}';      %'# file names 

symbolsList = cell(numel(files),1); %// Change 

filedata = cell(numel(files),1);    %# store file contents 
for i=1:numel(files) 
    [pathstr,name,ext] = fileparts(files{i}); 
    symbolsList{i} = name; %// Change 
end 
,我已經預分配單元陣列和每個文件要看看

拿筆記在,我已經索引到正確的單元格,並將名稱放在那裏。這主要是由於效率而優於串聯。要訪問我名字,簡單地做:

name_to_choose = symbolsList{i}; 

小注

filedata在代碼中不使用任何地方都沒有。你確定你把所有的代碼都放好了嗎?

相關問題