3
我在Matlab中使用递归函数,其中每个级别都需要一些变量,但这些不变。虽然有些功能发生变化,但也需要在主程序中体现出来。matlab中的全局变量和参数,哪个最快?
我想知道这是最好的:
- 要定义主&功能全局变量像
global in1, in2, out1
- 或然后作为参数传递给像
[out1]=functionName(in1,in2)
充当我的程序很复杂我想减少内存需求并且执行速度很快。
我在Matlab中使用递归函数,其中每个级别都需要一些变量,但这些不变。虽然有些功能发生变化,但也需要在主程序中体现出来。matlab中的全局变量和参数,哪个最快?
我想知道这是最好的:
global in1, in2, out1
[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
将在编辑器中着色为浅蓝色以强调该共享范围)。
至于哪种方法最快,使用最少的内存,这可能很大程度上取决于您的特定算法的细节 - 数据的复制数量,递归的深度等等。我认为您需要进行试验并采取一些时间,或者使用tic
和toc
,或者使用MATLAB Central File Exchange中的Steve Eddins的timeit函数更好。