有时我希望能够将变量保存到磁盘。我想将其保存在名为“_WorkData”的子文件夹中。
下面的代码作为独立代码可以正常工作
OutputName = 'my favorite file';
save(['_WorkData/' OutputName '.mat'], 'foobar');
但是作为一个函数,它找不到变量
Variable 'foobar' not found.
function noDataReturn = saveFileDisk(name,variable)
save(['_WorkData/' name '.mat'], variable);
noDataReturn = 'file saved';
end
我明白为什么会发生这种情况,但我对 Matlab 代码不够熟悉,无法理解如何纠正它。
这是一个三重问题。
其工作原理如下:
function noDataReturn = saveFileDisk(name,variable)
savename = sprintf('%s',inputname(2));
S.(savename) = variable;
save(['_WorkData/' name '.mat'], '-struct', 'S', savename);
noDataReturn = 'file saved';
end
inputname
函数获取原始变量名称(在这种情况下,第二个输入就是您想要的)。struct
,其字段名称与您的原始变量名称相对应。save
函数的选项单独保存 struct
中的字段。saveFileDisk('test_name',foobar)
结果将是您的
foobar
文件中的变量 test_name.mat
。