gpt4 book ai didi

matlab - 以编程方式确定脚本是否正常发布或执行

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:39 26 4
gpt4 key购买 nike

在发布 R2016a 之前,publishing是 MATLAB 中记录脚本结果的方式。我发现当我手动运行脚本时,我经常在整个脚本中放置 pause 命令。有没有一种简单的方法可以确定脚本是否已发布?然后,我可以将我的暂停包含在一些代码中,例如:

if isNotPublishing
pause();
end

我的 google foo 未能找到解决方案。

最佳答案

执行此操作的一个简单方法是查看 publish 是否在调用堆栈中。 dbstack 将返回一个 struct 数组,指示以何种顺序调用了哪些函数以到达我们调用 dbstack 的点。我们可以使用 name 属性来告诉我们所有这些函数的名称,并查看 publish 是否在其中。如果是,那么我们假设该脚本是通过 publish 调用的。

stack = dbstack;
isBeingPublished = ismember('publish', {stack.name});

或者如果你希望它成为单行

isBeingPublished = ismember('publish', cellfun(@(x)x.name, dbstack, 'UniformOutput', 0));

无论您是使用发布 工具栏还是从命令行

发布脚本,这都应该有效
publish('myscript.m')

如果你真的想变得很花哨,你可以重载pause(或者编写你自己的版本,mypause)来为你做这个检查。这是有效的,因为在您的新 pause 函数中,dbstack 仍将包含 publish 因为您从最终由 评估的脚本中调用了它发布。如果您创建此函数,则您的代码中不需要所有这些逻辑,而只需调用 mypause() 即可。

function mypause(varargin)
stack = dbstack;
if ~ismember('publish', {stack.name});
builtin('pause', varargin{:})
end
end

关于matlab - 以编程方式确定脚本是否正常发布或执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37601375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com