如何基于MATLAB中的字符串创建具有动态名称的变量?

时间:2015-11-02 15:05:18

标签: matlab reflection loading

我有以下MATLAB函数读取变量var。例如,结构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

1 个答案:

答案 0 :(得分:2)

从内存中加载它:

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?

会自动提供数据。