我正在尝试将目录中的文件名附加到列表中以供稍后处理。以下代码不起作用。
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
答案 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
根本没有被使用。你确定你把所有代码都放了吗?