执行脚本,但不要触摸 Matlab 中的工作区



我可以执行脚本,但让它不接触任何当前的工作区变量吗? 即将脚本转换为函数?

此外,最好在运行后访问此脚本的变量。

我试过了

evalin('myworkspace', 'myscript')

但它失败了。

我试过了

evalin('caller', 'myscript')

但它改变了变量。

有可能完成吗?

在不更改脚本本身的情况下完成此操作的简单方法是:

save
myscript
% ... examine variables
clear
load

save将当前工作区保存到名为"matlab.mat"的MAT文件中。如果您愿意,可以给它一个不同的名称。load再次加载它。如果为save指定了不同的名称,请为load指定相同的名称。

如果您有并行计算工具箱,则可以通过将脚本提交到本地集群来实现。(只是为了强调,您的本地群集是您自己的电脑。

例如,如果您有带有该行的脚本SO.m

a = randn;

然后,您可以使用提交并等待

job = batch('SO', 'Profile', 'local');
wait(job);

完成运行后,您可以使用

M = load(job);

那么所有的变量都是M的字段。

>> M.a
ans =
0.4010

最新更新