我希望有时可以将变量保存到磁盘。我想将它保存在一个名为'_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代码,以了解如何纠正它。
任何帮助将不胜感激!
答案 0 :(得分:1)
这是一个三重问题。
以下是它的工作原理:
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
。