一种在 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 中使用默认或动态生成的文件名进行保存? [复制]

MATLAB:在脚本和 GUI 之间传输变量

一种在大型 PostgreSQL 表中处理/合并“后继记录”的方法?

Matlab:将 .m 文件保存到变量的好方法

web存储中cookiesession区别