Matlab中动态保存文件的方法? [重复]

问题描述 投票:0回答:1

有时我希望能够将变量保存到磁盘。我想将其保存在名为“_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 代码不够熟悉,无法理解如何纠正它。

matlab file save
1个回答
1
投票

这是一个三重问题。

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

其工作原理如下:

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

© www.soinside.com 2019 - 2024. All rights reserved.