Matlab用变量名保存.mat文件

Posted

技术标签:

【中文标题】Matlab用变量名保存.mat文件【英文标题】:Matlab saving a .mat file with a variable name 【发布时间】:2017-08-13 20:56:27 【问题描述】:

我正在创建一个每天分析数据的 matlab 应用程序。 使用 xlsread() 从 csv 文件中读取数据

[num, weather, raw]=xlsread('weather.xlsx');
% weather.xlsx is a spreadsheet that holds a list of other files (csv) i 
% want to process
for i = 1:length(weather)
    fn = [char(weather(i)) '.csv'];

    % now read in the weather file, get data from the local weather files
    fnOpen = xlsread(fn);

    % now process the file to save out the .mat file with the location name
    % for example, one file is dallasTX, so I would like that file to be 
    % saved as dallasTx.mat
    % the next is denverCO, and so denverCO.mat, and so on.
    % but if I try...
    fnSave=[char(weather(i)) '.mat'] ;
    save(fnSave, fnOpen) % this doesn't work

    % I will be doing quite a bit of processing of the data in another 
    % application that will open each individual .mat file
end

++++++++++++++++ 很抱歉没有提供完整的信息。 执行上述操作时出现的错误是: 使用保存出错 参数必须包含一个字符串。

相如和 Wolfie,save(fnSave, 'fnOpen') 按照你的建议工作。现在我有一个dallasTX.mat文件,里面的变量名是fnOpen。我现在可以处理这个了。

感谢您的快速回复。

【问题讨论】:

Save mat file from MATLAB的可能重复 【参考方案1】:

如果您在它不起作用时提供错误消息会很有帮助。

对于这种情况,我认为问题在于 save 的语法。你需要做:

save(fnSave, 'fnOpen'); % note the quotes

另外,您可以使用 weatheri 代替 char(weather(i))。

【讨论】:

【参考方案2】:

来自documentation,使用命令时

save(filename, variables)

variables 应如所述:

要保存的变量名称,指定为一个或多个字符向量或字符串。使用 save 命令形式时,不需要将输入内容用单引号或双引号括起来。变量可以是以下形式之一。

这意味着你应该使用

save(fnSave, 'fnOpen'); 

由于您还想使用存储在变量中的文件名,因此命令语法并不理想,因为您必须使用eval。在这种情况下,替代选项将是

eval(['save ', fnSave, ' fnOpen']);

如果你有一个固定的文件名(供将来参考),这会更简单

save C:/User/Docs/MyFile.mat fnOpen

【讨论】:

以上是关于Matlab用变量名保存.mat文件的主要内容,如果未能解决你的问题,请参考以下文章

matlab 存储mat文件

在 Matlab 中自动生成变量名并保存到文件

Matlab中.mat文件,需要遍历变量,怎么做?

matlab 将mat文件中数据赋给另外一个变量

matlab修改读取mat文件后的变量名

matlab中workspace中数据怎么保存