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
의 인수를 지정하려면 다음과 같이하십시오. f 기름 부음 :
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));
당신은을 위해 evalin ('발신자', N)를 사용할 수 없습니다 var2struct의 두 번째 버전? 어쨌든, 고급 Matlab을 포함하는 아름다운 솔루션을 얻으려면 +1하십시오. – Jonas
@Jonas :'var2struct'의 두 번째 버전에 대해'evalin ('caller', n)'을 사용하면'evalin'을 호출하는 함수에서 실제로 평가를 수행합니다.이 함수는 호출하는 함수가 아닌'var2struct' 'var2struct'. 그래서'var2struct'의 첫 번째 버전이 더 좋았습니다 ... 더 깨끗하고 융통성있게 보입니다. – gnovice
D' oh !. 나는 그 실수를 저지른 것을 기억한다. – Jonas