Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中基于字符串创建具有动态名称的变量?_Matlab_Reflection_Loading - Fatal编程技术网

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

如何在MATLAB中基于字符串创建具有动态名称的变量?,matlab,reflection,loading,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 c

我有下面的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

要从内存加载,请执行以下操作:

load([pwd, '\\', tempvar, '.mat']);
它会把里面的东西和保存它们的名字一起加载,或者

data_from_mat=load([pwd, '\\', tempvar, '.mat']);
data\u from\u mat
将是一个结构,其中的字段与保存的变量名称相对应,因此

data_from_mat=getfield(data_from_mat,'varname'); %// instead of 'varname' tempvar?

将为您提供数据本身。

不要:(.动态变量并不酷。@AnderBiguri这是怎样的有用反馈?我的目标是减少32位系统上出现
内存不足
错误的概率。还有其他方法解决我的问题吗?
Pack
是不够的,为什么要保存然后重新加载?这能解决您的任何问题吗?运行cod之后e、 内存量是一样的,对吗?@本体这是反馈所能得到的最有用的。这不是你具体问题的答案,而是非常有用的反馈。查看链接,它们很好地解释了为什么使用动态变量名,尤其是
eval
是不好的。要点:它破坏了解释器,因此所有内置的加速离子发动机