【发布时间】:2017-04-09 09:00:36
【问题描述】:
我想用一个脚本从不同文件夹运行多个脚本
例如我有以下代码:
Original_AddRun1 = 'F:\UPT\Root\Run\S1.m';
Original_AddRun2 = 'F:\UPT\Root\Run2\S2.m';
Original_AddRun3 = 'F:\UPT\Root\Run3\S3.m';
Original_AddRun4 = 'F:\UPT\Root\Run4\Subfolder\S4.m';
run(Original_AddRun1);
run(Original_AddRun2);
run(Original_AddRun3);
run(Original_AddRun4);
我要运行四个脚本(S1.m、S2.m、S3.m 和 S4.m),它们位于文件夹(Run、Run2、Run3 和 Run4 中的子文件夹)中
上面的 Matlab 是在包含所有文件夹的“根”文件夹中创建的
但是当我运行代码时会发生以下错误
Undefined function or variable 'Original_AddRun2'.
Error in AllRun (line 7)
run(Original_AddRun2);
第一个脚本运行,我得到了我想要的图形,但是当它尝试运行第二个脚本时它停止了,每个单独的脚本都可以完美运行并且之前已经过测试
记住 S2.m 需要 S1.m 生成的变量才能工作,同样 S3.m 需要 S2.m 生成的变量,S4.m 需要 S3.m 生成变量...这就是为什么这些脚本需要按顺序运行并且不能使用Function,因为它使用自己的工作区而不是一般工作区
我使用save() 在每个脚本末尾保存常规工作区,然后清除常规工作区以便能够运行下一个脚本,然后使用load()
在该脚本中将我需要的变量加载到常规工作区以再次使用它们
我觉得有一种更简单的方法可以做到这一点,即迂回方式save() 和load()
【问题讨论】:
-
也许你在第一个脚本中调用
clear?作为一种解决方案,您可以使用函数而不是脚本。 -
你为什么要这样做?你想达到什么目的?
-
如果您从命令行手动运行脚本,了解会发生什么会很有帮助。假设它们都在您的路径中, S1 然后 S2 (在执行 S1 之后)会起作用吗?您的 S1 是否有任何副作用使 S2 无法执行?我最好的选择是:例如,您是否在 S1 结束和/或 S2 开始时清除所有变量?在这种情况下,工作区中不再有任何变量(这就是未定义 Original_AddRun2 的原因)
-
@m7913d @pacta_sunt_servanda 我尝试使用
Clear,但它不起作用,它已经用 S1.m (Clear All) 编写,它们不能用作函数,因为 S2.m 使用 S1 .m 的变量和 S3.m 使用 S2.m 的变量等等,而函数(据我所知)不使用一般的工作空间.....我正在处理的这四个脚本来自我的朋友,他问我帮助他完成计算肌肉能量的项目,每个项目大约需要 1 到 2 分钟才能完成......这就是为什么我想编写一个代码来一个一个地运行它们,而我不必留在屏幕上手动操作做吧 -
我的意思是,您应该不使用我的回答中指出的
clear。
标签: matlab