如何使用matlab将多个文件从目录加载到数组中



我有一个包含一些.mat文件的目录,我想将所有这些文件加载到一个数组中。我试过这样的东西:;

x1=load('C:UsersmeOneDriveDesktopprojectafirst_file.mat')
x2=load('C:UsersmeOneDriveDesktopprojectasecond_file.mat')

对目录中的所有文件以此类推,最后我想有一个数组,这样:

arr(1)=x1 ...

如何访问目录并同时将所有文件加载到数组中?

ps:我试过使用path before和dir,但后来我得到了这个错误:

使用eval、undfind函数"workspacefun"进行输入时出错结构类型的参数

提前感谢您。

load函数将.mat文件中的变量及其真实名称加载到当前工作区中。如果将x指定为load的输出,则变量名称将显示为名为x的结构的字段。例如,如果first.mat包含v1,则x = load('first.mat')将产生x = struct with fields: v1

因此,在您的情况下,假设您确信每个.mat文件都包含一个变量,则可以编写以下循环,将所有.mat文件加载到单元数组arr中。

fds = fileDatastore('*.mat', 'ReadFcn', @load);  % assume same folder
files = fds.Files;
for i = 1:length(files)
% convert one-field struct into array, store in "arr"
arr{i} = struct2array(load(files{i}));
end

现在,每个arr{i}都将包含一个变量,比如vi,按字典顺序排列。如果.mat文件包含多个变量,则此代码将中断。如果文件在另一个文件夹中,您可以使用它们的实际path和扩展名,如fileDatastore('path', 'ReadFcn', @load, 'FileExtensions','.mat')

相关内容

  • 没有找到相关文章

最新更新