gpt4 book ai didi

matlab - 跨多个函数文件设置操作模式的优雅方式

转载 作者:行者123 更新时间:2023-12-02 03:46:56 26 4
gpt4 key购买 nike

我写了一段代码,调用了很多函数,这些函数又调用了几个子函数。

我从命令行调用主文件,并用某些参数补充调用以启动我已经说明的某些模式。

例如octave classify_file.m --debug <file>将在我的自定义 Debug模式下运行,该模式设置常量 debug1随后输出所有图和相关变量。省略参数仅输出 1 个变量。

同样我有一个template和一个 histogram模式,它们基本上都做同样的事情,除了根据模式输出更多的变量、矩阵和绘图。

现在,我必须包括 debug , templatehistogram如果我希望它们受各自模式的影响,则常量作为每个函数的参数。

这很麻烦且令人困惑,必须有更好的方法。我从未使用过全局变量,但这是使用全局变量的好地方吗?这个问题的优雅解决方案是什么?

最佳答案

在这种情况下,全局变量会派上用场,尽管您可能知道它们有时不受欢迎,并且在 matlab 中也会对性能产生一定的影响。就我个人而言,我不认为将模式一直传递到调用堆栈是太糟糕了——尽管您是否将所有 3 个都视为单独的参数?您至少可以将它们放在最高级别函数的结构中,这样您就只有 1 个参数:

mode.debug = [whatever]
mode.histogram = [whatever]
mode.template = [whatever]
myFunction(mode);

或者,如果您一次只能有一种模式,那么一些整数常量呢?

mode = MODE_DEBUG

mode = MODE_NONE

我会通过创建短函数来定义常量,例如 pi 常量就是这样工作的。

最后,我更喜欢全局变量的替代方法,它是使用 persistent 的函数。变量。例如:

function m = debugMode(newValue)
persistant isModeOn;

if nargin > 0
isModeOn = newValue
end
m = isModeOn;
end

这样你就可以调用debugMode(1)来设置它,你可以调用m = debugMode任何地方来获取值.

关于matlab - 跨多个函数文件设置操作模式的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16437600/

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