如何在matlab中合并加载多个.mat文件 | 您所在的位置:网站首页 › Matlab读取文件夹下所有mat文件 › 如何在matlab中合并加载多个.mat文件 |
文章目录
前言代码及其解释总结
前言
前几天遇到过一个数据集处理的小小问题,记录一下。 就是我需要把若干个.mat文件合并到一起再加载进去 其中每一个.mat文件是有data和labels data的维度是40×40×8064 labels的维度是40×4 也就是我需要得到32个data,并且放在一起构成一个40×40×8064×32的4D数据 需要得到32个labels,并且合并在一起构成一个40×40×32的数据 代码及其解释比如我有从s1到s32一共32个数据集,存放的路径是 E:\DEAP_matlab\DEAP数据集\data_preprocessed_matlab\s*.mat *从1到32表示32个数据集 我的做法是先导入s1.mat a=load('E:\DEAP_matlab\DEAP数据集\data_preprocessed_matlab\s1.mat'); A = getfield (a,'data'); %先把s1.mat的data放在A中,方便后续 L = getfield(a,'labels'); %先把s1.mat的labels放在L中然后就需要遍历从s2.mat的data到s32.mat的data填充在刚才的A的维度上 遍历s2.labels到s32.mat的labels填充在刚才的L的维度上 定义一个存放数据集的List,然后遍历 List =dir('E:\DEAP_matlab\DEAP数据集\data_preprocessed_matlab\s*.mat'); k=length(List); for i=2:k filename=['E:\DEAP_matlab\DEAP数据集\data_preprocessed_matlab\s',num2str(i),'.mat']; b=load(filename); B = getfield (b,'data'); %得到从s2.mat开始的data放在B中 G =getfield(b,'labels'); %得到从s2.mat开始的labels放在G中 A = cat(4,A,C); %用cat函数进行拼接,4表示最后变成4D大小 L = cat(3,L,G); end最后就得到了我想要的EEG_data 和 EEG_labels EEG_data=A; EEG_labels=L;最后试一下看看对不对 本人还是新手,估计还有更加简单的写法,我感觉我这个有点笨,不过还是勉强实现了我想要的。慢慢加油。 |
CopyRight 2018-2019 实验室设备网 版权所有 |