除了使用LOAD和SAVE之外,我知道没有内置函数可以执行此操作。但是,您可以制作自己的函数,如下所示:
function s = var2struct(varargin)
names = arrayfun(@inputname,1:nargin,'UniformOutput',false);
s = cell2struct(varargin,names,2);
end
function struct2var(s)
cellfun(@(n,v) assignin('base',n,v),fieldnames(s),struct2cell(s));
end
从基础工作区工作,您可以像这样使用这些功能:
a = 'adsf'
b = rand(10);
x = var2struct(a,b);
clear a b
struct2var(x);
几点注意事项:
如果您希望将参数指定var2struct
为变量名而不是变量本身,这里有一个替代函数:
function s = var2struct(varargin)
values = cellfun(@(n) evalin('base',n),varargin,'UniformOutput',false);
s = cell2struct(values,varargin,2);
end
您将在基本工作区中使用它,如下所示:
x = var2struct('a','b');
不幸的是,您只能使用此版本的函数从基本工作区获取变量,而不是函数的工作区。
对上述函数的一个警告struct2var
是,它将始终在基础工作区中创建变量,而不是函数调用的工作区struct2var
。要在除基础之外的工作区中创建变量,您必须在该工作区中使用此行而不是调用struct2var
:
cellfun(@(n,v) assignin('caller',n,v),fieldnames(x),struct2cell(x));