使用一个脚本从不同的文件夹运行不同的matlab脚本

时间:2017-04-09 09:00:37

标签: matlab

我想使用一个脚本

从不同的文件夹运行多个脚本

例如我有以下代码:

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()

2 个答案:

答案 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() ....有点迂回的方式,但只要它工作