MATLAB的全局变量 |
您所在的位置:网站首页 › MATLAB变量运算原理 › MATLAB的全局变量 |
很多编程语言中都有变量作用域这个概念,但在MATLAB中变量的作用域其实讨论的并不多。但是在写程序的过程中,我发现灵活应用全局作用域能够起到简化代码的效果。 在一般编写脚本的时候,函数其实是有自己的一个内部作用域的,如果要将全局变量传递给一个函数,就要把这个变量当做函数的参数,这就会导致函数的参数项非常多。所以就少了一分写Python这种动态语言的感觉。 首先看一个例子: % test1.m a = 10; foo(); function foo() disp(a) % error end上面这段程序是会报错的,因为函数foo无法访问全局变量中的a。 要让函数能够访问全局变量,需要加上global关键字: % test2.m global a a = 10; foo(); function foo() global a disp(a) % 10 end第一个global a声明a是全局变量,函数foo中的global a将全局变量a引入自己的作用域。这两个global语句缺一不可! 注意:在函数体内修改全局变量,这个操作是永久的: % test3.m global a a = 10; foo(); disp(a) % 20 function foo() global a disp(a) % 10 a = 20; endMATLAB似乎没有nonlocal这样的关键词,所以函数与子函数传递参数还是使用global,但是,它起到nonlocal的作用(类似Python)。见下例: % test4.m foo1() disp(k) % error function foo1() global k k = 1; foo2() end function foo2() global k disp(k) % 1 end如果一个变量在函数中被第一次global,那么它只会出现在子函数的变量作用域中,而不会影响到该脚本的全局变量作用域。 以上代码均在MATLAB R2020b环境中运行。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |