让我们考虑以下代码在matlab函数中声明全局变量
function[y] = myfun2(x)
global b
a = 3;
y = x.^4.*sqrt(a*x+5)./(x.^2+b);
b = 4;
然后按照命令
global b;
>> b=1
b =
1
>> y=myfun2(3)
返回值
y =
30.3074
我首先质疑为什么有必要第二次声明全局变量?是不是在函数内声明它?还有我的第二个问题
以下命令
y=myfun2(3)
y =
23.3134
这是否意味着它第二次使用数字4?我如何确定第一次使用哪个b?我的意思是1或4?提前感谢
答案 0 :(得分:1)
@dato datuashvili,
你对全局变量感到困惑。
通常,每个MATLAB®函数都有自己的局部变量,这些局部变量与其他函数的局部变量以及基础工作空间的局部变量是分开的。但是,如果多个函数(可能还有基本工作空间)都将特定名称声明为全局,则它们共享该变量的单个副本。在任何函数中,对该变量的任何赋值都可用于声明全局的所有函数。 如果第一次发出全局语句时全局变量不存在,则将其初始化为空矩阵。 如果当前工作空间中已存在与全局变量同名的变量,则MATLAB会发出警告并更改该变量的值以匹配全局变量。
看看这个页面,这也是我答案的来源。
http://www.mathworks.in/help/matlab/ref/global.html
除此之外,
您需要将x声明为您希望在其中共享的每个范围(即函数/工作空间)中的全局变量。因此,您需要将test1编写为:
function test1()
global x;
x = 5;
end
以上答案的来源是Declaring a global variable in MATLAB。 如果这对您没有帮助,请通知我。