【小技巧】如何避免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数据了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B417科研笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值