我有一个目录,其中包含一些.mat文件,我想将所有这些文件加载到一个数组中。我尝试了这样的方法:;
x1=load('C:\Users\me\OneDrive\Desktop\project\a\first_file.mat')
x2=load('C:\Users\me\OneDrive\Desktop\project\a\second_file.mat')
..。对于目录中的所有文件依此类推,最后我希望有一个数组,以便:
arr(1)=x1 ...
如何访问该目录并同时将所有文件加载到一个阵列中?
PS:我之前尝试过使用路径和目录,但后来收到以下错误:
对结构类型的输入参数使用eval,undefind函数‘workspaceun’时出错
提前谢谢你。
1条答案
按热度按时间eqqqjvef1#
load
函数将.mat
文件中的变量及其真实名称加载到当前工作区。如果将x
指定为load
的输出,则变量名称将显示为名为x
的结构的字段。例如,如果first.mat
包含v1
,则x = load('first.mat')
将生成x = struct with fields: v1
。因此,在您的例子中,假设您确定每个
.mat
文件都包含一个变量,您可以编写以下循环来将所有.mat
文件加载到单元格数组arr
中。现在,每个
arr{i}
都将按词典顺序包含一个变量,比如vi
。如果.mat
文件包含多个变量,则此代码将中断。如果文件位于另一个文件夹中,则可以使用其实际的path
和扩展名,如fileDatastore('path', 'ReadFcn', @load, 'FileExtensions','.mat')
。