如何加载具有/不同名称的 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')
我有不同的 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')