Помимо использования 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));