一种在Matlab中动态保存文件的方法?

时间:2014-07-15 13:33:46

标签: matlab file save

我希望有时可以将变量保存到磁盘。我想将它保存在一个名为'_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代码,以了解如何纠正它。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

这是一个三重问题。

  1. 您必须将变量传递给您的函数(而不是字符串)
  2. 但是,保存调用实际上需要字符串
  3. 该函数必须有一个带有原始名称的变量,以便按预期保存。
  4. 以下是它的工作原理:

    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