如何在 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?

会给你数据本身。