gpt4 book ai didi

matlab - matlab中的全局变量和参数,哪个最快?

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:37 27 4
gpt4 key购买 nike

我在 Matlab 中使用递归函数,其中每个级别都需要一些变量,这些变量不会改变。虽然有些确实在功能上发生了变化,也需要在主程序中体现。

我想知道哪个最好:

  • 在 main 和函数中定义全局变量,如 global in1, in2, out1
  • 或者将 then 作为参数传递给 [out1]=functionName(in1,in2)

由于我的程序很复杂,我想减少内存需求并提高执行速度。

最佳答案

根据您的算法结构,可能还有第三种选择,即使用嵌套函数。嵌套函数有自己的工作空间(变量作用域),但也可以访问嵌套它的函数的工作空间中的变量——但它们不是正确的全局变量。

每当我在 MATLAB 中实现递归函数时,我发现这是一种通常使代码非常干净的方法。

这是一个简单的算术例子:

function z = times1(x,y)

if y == 0
z = 0;
else
z = plusy(times1(x, y-1));
end

function z = plusy(x)
z = x+y;
end

end

您可以看到变量 y 在嵌套函数 plusy 中使用,尽管它不是输入参数,但在父函数的工作空间中;但它不是全局性的。 (请注意,在最新版本的 MATLAB 中,y 将在编辑器中显示为浅蓝色以强调此共享范围)。

至于哪种方法最快并且使用最少的内存,这可能在很大程度上取决于您的特定算法的细节 - 有多少数据复制,递归的深度等。我认为你需要试验并采取一些计时,要么使用 tictoc,要么使用 Steve Eddins 的 timeit 更好。来自 MATLAB 中央文件交换的函数。

关于matlab - matlab中的全局变量和参数,哪个最快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8148982/

27 4 0
文章推荐: matlab - gcc 链接器找不到库 (openNI)
文章推荐: html - 如何将
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com