如何在 MATLAB 中基于字符串创建具有动态名称的变量?
How can I create a variable with a dynamic name based on a string in MATLAB?
我有以下读取变量 var
的 MATLAB 函数。例如,结构 cfg
作为 var
传递。在这种情况下,我使用 inputname(1)
成功地将此字符串表示恢复为 'cfg'。我也可以成功另存为'cfg.mat'。但是,作为 'cfg' 加载到内存中不起作用。我考虑过使用 eval
,但我没能成功。
function data_from_mat = optimize2disk( var )
%OPTIMIZE2DISK Saves a variable to disk, deletes it from current memory,
% and loads it from disk
%
tempvar = inputname(1);
disp(['Saving ', tempvar, ' to disk...']);
save([pwd, '\', tempvar, '.mat']);
disp(tempvar);
data_from_mat = load([pwd, '\', tempvar, '.mat']);
end
要从内存加载它:
load([pwd, '\', tempvar, '.mat']);
它会用保存时的名字加载里面的任何东西,否则
data_from_mat=load([pwd, '\', tempvar, '.mat']);
和 data_from_mat
将是一个结构,其字段与保存的变量名称相对应,因此
data_from_mat=getfield(data_from_mat,'varname'); %// instead of 'varname' tempvar?
会给你数据本身。
我有以下读取变量 var
的 MATLAB 函数。例如,结构 cfg
作为 var
传递。在这种情况下,我使用 inputname(1)
成功地将此字符串表示恢复为 'cfg'。我也可以成功另存为'cfg.mat'。但是,作为 'cfg' 加载到内存中不起作用。我考虑过使用 eval
,但我没能成功。
function data_from_mat = optimize2disk( var )
%OPTIMIZE2DISK Saves a variable to disk, deletes it from current memory,
% and loads it from disk
%
tempvar = inputname(1);
disp(['Saving ', tempvar, ' to disk...']);
save([pwd, '\', tempvar, '.mat']);
disp(tempvar);
data_from_mat = load([pwd, '\', tempvar, '.mat']);
end
要从内存加载它:
load([pwd, '\', tempvar, '.mat']);
它会用保存时的名字加载里面的任何东西,否则
data_from_mat=load([pwd, '\', tempvar, '.mat']);
和 data_from_mat
将是一个结构,其字段与保存的变量名称相对应,因此
data_from_mat=getfield(data_from_mat,'varname'); %// instead of 'varname' tempvar?
会给你数据本身。