【小技巧】如何避免Matlab中过于频繁和琐碎的参数传递 | 您所在的位置:网站首页 › matlab很卡咋办 › 【小技巧】如何避免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数据了。 |
CopyRight 2018-2019 实验室设备网 版权所有 |