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');
残念ながら、このバージョンの関数を使用して、関数のワークスペースではなく、ベース ワークスペースから変数を取得することしかできません。
上記の関数に関する 1 つの注意点struct2var
は、関数呼び出しのワークスペースではなく、常にベース ワークスペースに変数が作成されることstruct2var
です。ベース以外のワークスペースで変数を作成するには、 を呼び出す代わりに、そのワークスペースで次の行を使用する必要がありますstruct2var
。
cellfun(@(n,v) assignin('caller',n,v),fieldnames(x),struct2cell(x));