如何加载多个包含时间表的.mat文件到工作区并垂直连接它们

15次观看(过去30天)
你好,
我试图加载~100 .mat文件到工作区,并将它们组合成一个单一的时间表。
每个文件包含一个特定日期的时间表,我只是试图将它们组合在一起。然而,我努力不去动态地命名它们。
clearvars
matFiles = dir(‘* .mat‘);
numfiles = length(matFiles);
Mydata = cell(1, numfiles);
K = 1:numfiles
mydata{k} = load(matFiles(k).name);
结束
这将生成一个1x100单元格数组,其中每个单元格都是包含时间表的1x1结构体。然而,当它们被加载时,结构字段名是从文件名取的,这意味着它们都是不同的,我不能使用vertcat。(例如,I get ' 连接的结构数组中的字段名不匹配 的错误)。我必须重命名结构吗?如果是,怎么重命名?还是我做错了?
处理这一系列文件的正确方法是什么?
亲切的问候,
奥利弗
3评论

登录发表评论。

接受的答案

Stephen23
Stephen23 2021年9月4日
编辑:Stephen23 2021年9月4日
“我必须重命名结构吗?”
不,你不需要。
但在未来设计数据时,你应该保持结构名称相同。有些初学者认为用不同的名字更容易。实际上,使用完全相同的变量名/秒遍历多个文件可以使数据处理更简单、更高效、更健壮。
"处理这一系列文件的正确方法是什么? "
假设完全 一个 保存在每个mat文件中的变量:
P ='文件保存位置的绝对或相对路径'
S = dir(fullfile(P,‘* .mat‘));
k = 1:数值(S)
F = fullfile(P,S(k).name);
C = struct2cell(load(F));
(k)。data = C{1};
结束
T = vertcat(S.data)

更多答案(1)

里克
里克 2021年9月3日
如果使用struct2cell(在循环中或在cellfun中),则可以提取数据本身。然后您应该能够使用vertcat(data{:})。

s manbetx 845


释放

R2021a

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!