【小技巧】如何避免Matlab中过于频繁和琐碎的参数传递

许多人应该碰到过这样的问题:

为了更好地分离出主函数的每个部分,会将每个算法/功能写成一个单独的API。 但这时候就需要将主函数中定义的全局变量输入到API中进行计算, 传参是免不了的。

当参数非常繁多的时候,会导致需要传递的参数很多。 如果是函数中再嵌套函数的情况就会更加繁琐。 同时,如果一旦要新增加一个参数的话,就要把每个函数的传入参数都进行修改就行,极为麻烦。

这里给出两个非常经典却鲜为人知的解决方案。

方案1: 使用函数来代替脚本

我们可以将主脚本写成一个main.m 函数如下:

function main()

具体主函数内容
	function zihanshu()
	end
end

如上,就是直接创建一个没有输入也没有输出的函数。 这样的函数可以直接运行,在实际中和脚本没有任何区别。 但如果这样的话, 所有的变量会在子函数间共享。 如, 你在main()下定义的所有变量, 都可以在zihanshu()中直接调用, 不需要参数传递。

方案二: 声明全局变量

创建一个脚本,如你有一个全局变量x,希望可以在被调用的函数中使用,但不想繁琐地写参数传递,你可以现在main.m中这样写:

global x
x = 30;
test()

test()是你要调用的函数, 这里需要用到x,但你想避免参数传递,即不使用test(x)。 test只要这样写就可以:

function test()
global x
x = x + 10

只要在你要调用的函数里加上global x, 就可以避开传参直接使用x了。 如例子中, test()没有接受任何参数,最后会输出x=40。因为x=30通过global语句已经调用了外部脚本的x数据了。

发布了45 篇原创文章 · 获赞 103 · 访问量 72万+

猜你喜欢

转载自blog.csdn.net/weixin_39274659/article/details/104522978