一种在 Matlab 中动态保存文件的方法? [复制]
Posted
技术标签:
【中文标题】一种在 Matlab 中动态保存文件的方法? [复制]【英文标题】:A way to dynamically save files in Matlab? [duplicate] 【发布时间】:2014-07-15 13:33:46 【问题描述】:有时我希望能够将变量保存到磁盘。我想将它保存在一个名为“_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 代码不够熟悉,无法理解如何纠正它。
任何帮助将不胜感激!
【问题讨论】:
@Schorsch 那么您是否因为错字而对此投了反对票?这对我没有帮助! 谁说我投了反对票?相反,请参阅下面的答案。 在比较链接的问题和答案后,我不确定我是否会称其为重复项。即使内容重叠,它似乎也更容易理解和阅读。 【参考方案1】:这是一个三重问题。
-
您必须将变量传递给您的函数(而不是字符串)
但是,save 调用实际上需要字符串
函数必须有一个具有原始名称的变量才能按预期保存。
它是这样工作的:
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)
结果将是您的test_name.mat
文件中的变量foobar
。
【讨论】:
出色的解决方案。如果没有我目前的知识,不会找到它。 不客气。是一个艰难的。我喜欢它。以上是关于一种在 Matlab 中动态保存文件的方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 NSUserDefaults 中保存复选标记 - 动态 TableView
如何在 Matlab 中使用默认或动态生成的文件名进行保存? [复制]