【问题标题】:Load multiple .mat files for processing加载多个 .mat 文件进行处理
【发布时间】:2013-06-06 11:31:25
【问题描述】:

在 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 错误

【问题讨论】:

标签: matlab iteration matlab-load


【解决方案1】:

你可以load变成一个变量(最好是元胞数组)

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

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 2015-04-22
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多