Matlab 从另一个脚本修改脚本

Matlab 从另一个脚本修改脚本,matlab,Matlab,我有一个在循环中运行的脚本(在每次迭代中修改一些常量)。有没有一种方法可以在不修改.m文件的情况下注释掉脚本的一行 更新: 根据Floris和Matthew Simoneau的回答,我做了一个函数,试图做同样的事情(而且它是有效的)。skipLineParameter是一个字符串,引用值为0(不skipline)或1(skipline)的基本工作空间变量: 这是一种可能的方法-使用主程序中设置的条件来决定是否执行脚本中的特定行 如果你的主程序是 for ii = 1:9 skipLine3

我有一个在循环中运行的脚本(在每次迭代中修改一些常量)。有没有一种方法可以在不修改.m文件的情况下注释掉脚本的一行

更新: 根据Floris和Matthew Simoneau的回答,我做了一个函数,试图做同样的事情(而且它是有效的)。skipLineParameter是一个字符串,引用值为0(不skipline)或1(skipline)的基本工作空间变量:


这是一种可能的方法-使用主程序中设置的条件来决定是否执行脚本中的特定行

如果你的主程序是

for ii = 1:9
  skipLine3 = (mod(ii,3)==0);
  runSub
end
runSub.m
看起来是这样的:

A = 1;
B = 2;
% modified lines to trap condition where 'skipLine3' doesn't exist:
if ~exist('skipLine3', 'var') skipMe = false; else skipMe = skipLine3; end
if ~skipMe, B=B*2; end
fprintf(1, "for iteration %d B is %d\n", ii, B)
for ii = 1:9
    skipLine3 = (mod(ii,3)==0);
    runSub(ii,skipLine3)
end
那么输出将是:

for iteration 1 B is 4
for iteration 2 B is 4
for iteration 3 B is 2
for iteration 4 B is 4
for iteration 5 B is 4
for iteration 6 B is 2
for iteration 7 B is 4
for iteration 8 B is 4
for iteration 9 B is 2

如您所见,
skipLine3
参数是在主循环(每三次迭代)中设置的,它影响脚本中是否执行第3行(
B=B*2
)。下面介绍如何将runSub转换为函数:

function runSub(ii,skip)
A = 1;
B = 2;
if ~skip, B=B*2; end
fprintf(1, 'for iteration %d B is %d\n', ii, B);
您可以在循环中访问它,如下所示:

A = 1;
B = 2;
% modified lines to trap condition where 'skipLine3' doesn't exist:
if ~exist('skipLine3', 'var') skipMe = false; else skipMe = skipLine3; end
if ~skipMe, B=B*2; end
fprintf(1, "for iteration %d B is %d\n", ii, B)
for ii = 1:9
    skipLine3 = (mod(ii,3)==0);
    runSub(ii,skipLine3)
end

您可以添加一个
if
语句。。。仅当条件为真时,线路才会运行。但答案似乎很简单?如果需要,当希望跳过脚本中的第3行时,可以在主循环中设置变量
skipLine3
,第3行开始
If~skipLine3;结束
发布你想通过这个或问题的来源来实现什么可能更好,因为现在我无法想象这样做有什么意义。“注释一行”是通过修改文件来定义的。我认为在某些情况下,您希望跳过这一行,这可以通过条件语句来完成。@Floris,事实上,定义常量的脚本也可以在循环之外使用(因此它将寻找一个不存在的skipline参数。@M456确实,我想跳过一行。在查看了您的代码之后,我认为这是最简单的方法。我只是不想修改您的
runSub.m
文件的等效项(因此我想在脚本之外执行此操作)。我修改了代码,以处理在未定义
skipLine3
的情况下运行脚本的情况…如果他没有特别要求“脚本”,我会建议使用函数。没有“正确”回答这个问题-您的解决方案更加健壮,但与所问的问题相比更进一步……如果脚本最终在主级别设置了所需的参数,则函数无法工作(除非您开始添加全局变量、返回多个变量等)这是Matlab允许人们做违背良好编码实践的事情的许多地方之一。我在我的帖子中做了更新,让我知道你们对解决方案的看法。