Load multiple .mat files for processing

假装没事ソ 提交于 2020-01-14 12:03:24

问题


In MatLab I have (after extensive code running) multiple .mat files outputted to .mat files. The actual matlab name of each .mat file is called results but I've used the save command to write them to different files. A small subset of the files looks like this:

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

Now I want to compare the results for each test, which means I have to load in all four .mat files and combine them in a graph. Reading in one file and making the eventual graph is no problem. But since all files have the same matlab name results, iteratively loading them is not an option (at least, not one that I know of yet) since in the end only file 4 remains since it rewrites the previous ones.

Is there a way to load all these files and store them in different variables in a structure (regarding only one test set)? Because doing all this manually is a hell of a lot of work.

I've tried to use this method: Load Multiple .mat Files to Matlab workspace but I get an Invalid field name error on loaded.(char(file)) = load(file);


回答1:


You can load into a variable (preferably a cell array)

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

Now you have all the results stored in results cell array and you may access the stored variables, e.g.,

results{1,3}.someVar % access variable someVar (assuming such variable was saves to the corresponding mat file


来源:https://stackoverflow.com/questions/17030172/load-multiple-mat-files-for-processing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!