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

Matlab 将代码文件保存到.mat文件,matlab,Matlab,现在,我正在将仿真函数与.mat放在一起,其中包含一个.zip文件中的仿真结果和参数。然后,该文件是我的模拟函数的最终输出。这个过程确保了我可以追踪错误——这是一种原始的版本控制。模拟功能通常是大约10-100行代码 如果我可以加载一个文件并获取所有内容,这将更加优雅-因此,我想创建一个包含代码文件和变量的.mat文件,并在加载时在加载数据时将该代码文件放在当前文件夹中。这是可能的吗?我除了将变量和数字保存到.mat之外,什么都找不到 我正在考虑将函数的全部内容放在一个变量中,这是一个可能的选择

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

如果我可以加载一个文件并获取所有内容,这将更加优雅-因此,我想创建一个包含代码文件和变量的.mat文件,并在加载时在加载数据时将该代码文件放在当前文件夹中。这是可能的吗?我除了将变量和数字保存到.mat之外,什么都找不到


我正在考虑将函数的全部内容放在一个变量中,这是一个可能的选择,但我不觉得这很有吸引力,因为在我重新创建文件之前,我无法轻松读取代码。

以下假设保存模拟结果的函数与您要存储其代码的函数相同。可以使用mfilename获取文件名,然后使用evalc捕获类型的输出以获取其代码:

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读取文件内容:


谢谢,虽然这会将代码保存在变量中,并将代码保存在.mat中-正如我在问题的最后一部分中提到的,我希望避免这种情况。除非我在这里做错了什么,否则在我将代码写回代码文件之前,我无法轻松读取代码如果您不想将代码保存在变量中,您希望如何准确地保存代码?为什么不直接使用.m文件呢?正如我所说,目前我在zip文件中有.mat和.m,分别包含模拟结果和模拟代码,用作模拟存档。我想知道,当加载变量时,我是否能以某种方式使.mat文件包含可读的.m文件格式——要么将该.m文件加载到当前文件夹=用作zip文件,要么以其他方式加载。我认为这是不可能的。.mat文件存储变量。好吧,无论如何谢谢你:我接受了答案,因为这是一个很好的问题标题解决方案,如果有人搜索它,它将帮助你。
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'