MATLAB中的全局变量



让我们考虑以下代码,该代码在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中的全局变量。如果那没有帮助,请通知我。

相关内容

  • 没有找到相关文章

最新更新