让我们考虑以下代码,该代码在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?
@dato datuashvili,
您与全局变量混淆。
通常,每个MATLAB®函数都有其自己的本地变量,这些变量与其他功能的函数以及基本工作区的函数分开。但是,如果多个功能以及可能的基本工作空间,都将特定名称声明为全局,则它们都共享该变量的单个副本。在任何函数中,对该变量的任何分配均可用于所有声明全局的函数。如果您第一次发布全局语句时不存在全局变量,则将其初始化为空矩阵。如果当前工作区中已经存在与全局变量相同名称的变量,则MATLAB发出警告并更改该变量的值以匹配全局。
在此页面上有一个查看,这也是我答案的来源。
http://www.mathworks.in/help/matlab/ref/ref/global.html
除此之外,
您需要将X声明为每个范围(即功能/工作区)中的全局变量,您希望将其共享。因此,您需要将test1编写为:
function test1()
global x;
x = 5;
end
上述答案的来源是声明MATLAB中的全局变量。如果那没有帮助,请通知我。