将代码文件保存到.mat文件

时间:2018-05-28 10:35:45

标签: matlab

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

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

将函数的全部内容放在变量中是我正在考虑的另一种选择,但我发现它并不引人注目,因为在重新创建文件之前我无法轻松读取该代码

1 个答案:

答案 0 :(得分: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'