如何加载具有/不同名称的 mat 文件?

How to load mat files w/ different names?

我有不同的 mat 文件,名称不同。所以我正在使用一个函数,其输入是 mat 文件。我使用 "varargin" 启用该功能来获取不同的文件。

 function bestfunc(varargin)
 data = load(varargin, '-mat');
 end

当我尝试像

那样调用函数时

bestfunc('matrix777')

Matlabe 出现此错误:

Error using load
Argument must contain a string.

有什么想法吗?

您必须获取文件的名称。您可以使用 dir() 来做到这一点。

dir('*.mat') % will return information about all .mat files in the folder

输出是一个包含每个文件更多信息的结构。获取名称尝试

names=struct2cell(dir('*.mat'));
names=names(1,:);

现在 names 是一个 cellarray,其中包含文件夹中所有 *.mat 文件的名称。为

从每个 go 加载数据
for i=1:length(names)
    bestfun(names{i});
end

因为你只传递了一个参数,所以你不需要varargin,当你可能有一个可变数量的函数参数时使用它.

只需使用一个普通的变量名,如 matname:

function bestfunc(matname)
   data = load(matname, '-mat');
end

然后像以前一样调用它:

bestfunc('matrix777')