加载多个.mat文件进行处理

4
在MatLab中,我已经运行了大量代码,并将多个.mat文件输出到.mat文件。每个.mat文件的实际Matlab名称为results,但我使用save命令将它们写入不同的文件。其中一小部分文件如下:
results_test1_1.mat
results_test1_2.mat
results_test1_3.mat
results_test1_4.mat

results_test2_1.mat
results_test2_2.mat
results_test2_3.mat
results_test2_4.mat

现在我想要比较每个测试的结果,这意味着我必须加载所有四个.mat文件并将它们合并成一个图形。读取一个文件并制作最终的图形没有问题。但由于所有文件都具有相同的matlab名称“results”,因此无法迭代地加载它们(至少我还不知道如何做),因为最后只剩下文件4,因为它重写了之前的文件。
有没有一种方法可以加载所有这些文件并将它们存储在结构中的不同变量中(仅涉及一个测试集)?因为手动完成所有这些工作非常费力。
我尝试使用了这种方法:Load Multiple .mat Files to Matlab workspace,但是我在loaded.(char(file)) = load(file);上得到了一个“Invalid field name”错误。

类似的问题有thisthis - user2469775
1个回答

3
你可以将代码“load”到一个变量中(最好是一个cell数组)。
results = cell( 2, 4 ); % allocate
for testi=1:2
    for resi = 1:4
        filename = sprintf('results_test%d_%d.mat', testi, resi );
        results{testi,resi} = load( filename );
    end
end

现在,您已经将所有结果存储在results单元数组中,您可以访问存储的变量,例如,
results{1,3}.someVar % access variable someVar (assuming such variable was saves to the corresponding mat file

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接