我想使用一个脚本
从不同的文件夹运行多个脚本例如我有以下代码:
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),它们位于文件夹中(Run4中的Run,Run2,Run3和Subfolder)
上面的Matlab是在包含所有文件夹
的“Root”文件夹中创建的然而,当我运行代码时,会发生以下错误
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()
答案 0 :(得分:1)
我认为尽可能避免clear
更容易。它应该只在主脚本的顶部使用。解决方案是使用function workspace(通过创建function)而不是全局工作空间。通过这种方式,我们可以避免混乱全局工作区。
<强>的main.m:强>
clear all
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);
<强> F:\ UPT \根\运行\ S1.m:强>
function S1()
... % global variables (ex. Original_AddRun1) are not defined here
... % newly defined variables are not added to global scope
end
答案 1 :(得分:-1)
@ m7913d @pacta_sunt_servanda我做了一些研究,我的资深是Matlab的专家证实并告诉我,当你从另一个.m脚本运行.m脚本时,你必须清除工作区,然后再运行另一个.m脚本在我不想做的同一个过程中,因为每个脚本都依赖于前一个脚本的变量,为了避免这个并实现我的目标(来自我的老师的建议)我用save()
来保存工作空间然后清除它以运行下一个脚本,然后再次加载它load()
....有点迂回的方式,但只要它工作