创建列表并将文件名附加到此列表

时间:2015-12-29 20:50:06

标签: matlab

我正在尝试将目录中的文件名附加到列表中以供稍后处理。以下代码不起作用。

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

1 个答案:

答案 0 :(得分: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

请注意我已预先分配了单元格数组,并且对于要查看的每个文件,我已将其索引到正确的单元格并将名称放在那里。这主要由于效率而优于连接。要访问i th 名称,只需执行以下操作:

name_to_choose = symbolsList{i};

次要注意事项

您的代码中的

filedata根本没有被使用。你确定你把所有代码都放了吗?