将函数循环到结构索引中的麻烦

时间:2017-07-10 16:45:16

标签: matlab for-loop struct

我对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."

我不确定是什么问题。如何修复此代码,以便我可以一次读取文件夹中的所有数据?有没有比为这个结构制作索引更好更有效的方法呢?也许是不同结构的单元阵列甚至是嵌套结构的结构?谢谢!

1 个答案:

答案 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.