我正在使用MATLAB开展一个项目,项目的功能和结构可能需要在接下来的步骤中进行更改,但有时一个以前版本的程序(可能会被覆盖)可能比后者更好那些。 因为MATLAB要求使用自己的名称保存函数来更改函数名称并记住版本有点烦人。 有没有办法保存函数的所有版本以进一步返回?
答案 0 :(得分:5)
我认为科学程序员应该使用像Subversion和Git这样的源代码管理系统。保留输入和数据的版本,以便您可以随意重新创建结果。
当我以有限元分析为生时,我从未意识到这种做法。如果我现在要回到它,我肯定会将所有代码和输入文件保存在Git中。
答案 1 :(得分:1)
我过去经常使用这个技巧,但最近我发现这可能会使代码速度变慢。
在主脚本中说你需要一个名为foo
的函数 -
y = foo(5);
....你有foo
的两个版本:
function y = foo_v1(x)
y = x+1;
end
function y = foo_v2(x)
y = x+2;
end
诀窍是,在主脚本的开头创建一个函数句柄。
useversion = 'v1';
switch useversion
case 'v1'
foo = @foo_v1;
case 'v2'
foo = @foo_v2;
end
y = foo(5);
要协调大量功能,请考虑使用str2func
每次要更改要使用的版本时,唯一需要更改的是字符串变量useversion
。
但是功能句柄肯定会减慢代码的速度,显着。如果这是一个严重的重型项目,我会建议git
。