MATLAB的全局变量

您所在的位置:网站首页 MATLAB变量运算原理 MATLAB的全局变量

MATLAB的全局变量

2024-04-18 06:46| 来源: 网络整理| 查看: 265

很多编程语言中都有变量作用域这个概念,但在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; end

MATLAB似乎没有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