【问题标题】:Save code file to .mat file将代码文件保存到 .mat 文件
【发布时间】:2018-05-28 19:07:34
【问题描述】:

现在我将模拟函数与包含模拟结果和参数的 .mat 放在一个 .zip 文件中。该文件是我的模拟功能的最终输出。这个过程确保我可以追踪错误——一种原始的版本控制。模拟函数一般10-100行代码左右。

如果我可以加载单个文件并获取所有内容会更优雅 - 所以,我想创建一个包含代码文件和变量的单个 .mat 文件,并在加载时放置该代码加载数据时在当前文件夹中的文件。这可能吗(似乎不可能 - 除了将变量和数字保存到 .mat 之外,我找不到任何东西)?

将函数的全部内容放在一个变量中是我正在考虑的一种可能的替代方案,但我觉得它不是很有说服力,因为在我重新创建文件之前我无法轻松阅读该代码。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    以下假设保存模拟结果的函数与您要存储其代码的函数相同。它的工作原理是使用mfilename 获取文件名,然后使用evalc 捕获type 的输出以获取其代码:

    function test
    a = 1;
    b = 2;
    c = 1:10; % ... create result variables
    code = evalc(['type ' mfilename]); % this variable stores the code of current function
    save results % save in a file called 'results.mat'
    

    或者,如果您不想使用evalc,可以使用fread 读取文件内容:

    function test
    a = 1;
    b = 2;
    c = 1:10; % ... create result variables
    fid = fopen([mfilename('fullpath') '.m']); % open file of current function
    code = fread(fid, '*char').'; % read its code
    fclose(fid); % close file
    clear fid % delete variable
    save results % save in a file called 'results.mat'
    

    【讨论】:

    • 谢谢,尽管这会将代码保存在变量中,而将代码保存在 .mat 中 - 正如我在问题的最后一部分中提到的那样,我希望避免这种情况。在将代码写回代码文件之前,我无法轻松读取代码(除非我在这里做错了)
    • 如果你不想将代码保存在变量中,你想如何准确地保存代码?为什么不直接使用.m 文件呢?
    • 好吧,正如我所说,目前我有 .mat 和模拟结果,.m 和 zip 文件中的模拟代码 - 作为模拟存档。我想知道我是否可以以某种方式制作 .mat 文件,该文件(在加载变量时)包含 .m 文件的可读形式 - 通过将 .m 加载到当前文件夹中(= 作为 zip 文件)或以其他方式。
    • 我认为这不可能。 .mat 文件存储变量
    • 哦,好吧,无论如何谢谢 :) 我接受了答案,因为它是问题标题的一个很好的解决方案,如果其他人搜索这个问题,它会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 2012-04-15
    • 2014-11-18
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    相关资源
    最近更新 更多