我对matlab相对较新,非常感谢任何帮助。
目前,我有一个函数(我们称之为readf),它将数据从单个ascii文件读入多个字段的结构(我们称之为cdata)。
names = cellstr(char('A','B','C','D','E','F','G'));
cdata = readf('filestring','dataNames',names);
该函数工作正常,并为我提供了具有这些字段名称的结构的正确输出,每个字段名称的值是相应数据的单元格数组。
我的任务是创建一个for循环,它使用这个readf函数一次读入这些ascii文件的文件夹。我尝试使用它,以便for循环创建一个带有不同cdata结构索引的结构。在尝试了几种不同的方法之后,我很难过。
这是我到目前为止所做的。
files = struct2cell(dir('folderstring')); %creates a cell array of the names of the files withing the folder
for ii=length(files);
cdata(ii) = readf([folderstring,files(1,1:ii),names],'dataName',names);
end;
目前这给我以下错误。
"Error using horzcat
Dimensions of matrices being concatenated are not consistent."
我不确定是什么问题。如何修复此代码,以便我可以一次读取文件夹中的所有数据?有没有比为这个结构制作索引更好更有效的方法呢?也许是不同结构的单元阵列甚至是嵌套结构的结构?谢谢!
答案 0 :(得分:0)
变化:
for ii=length(files);
cdata(ii) = readf([folderstring,files(1,1:ii),names],'dataName',names);
end;
To:
for ii=1:length(files); % CHECK to make sure length(files) is giving you the right number
cdata(ii) = readf([folderstring,files{ii},names],'dataName',names);
end;
% CHECK files{ii}, with 1,2,3 etc. is giving you the correct file name.