MATLAB - 全局变量



MATLAB 中的全局变量是可以从代码的任何部分(包括函数和脚本内部)访问和修改的变量,无需将其作为函数参数传递或作为返回值返回。虽然全局变量可能很方便,但应谨慎使用,因为它们会使代码模块化程度降低,并难以调试。

关于全局变量的重要事项

  • 如果在第一次使用全局声明时全局变量不存在,它将被初始化为一个空的 0x0 矩阵。
  • 如果当前工作区中已经存在与全局变量名称相同的变量,MATLAB 将发出警告并调整该变量的值和作用域以匹配全局变量。

全局变量的声明

要在 MATLAB 中声明全局变量,需要使用 global 关键字后跟变量名。这告诉 MATLAB 该变量应具有全局作用域,并且可以从代码中的任何位置访问。

语法

global my_name;

关于全局变量的重要事项:

  • 当全局变量第一次使用且不存在时,它被初始化为一个空的 0x0 矩阵。
  • 如果当前工作区中已经存在与全局变量名称相同的变量,MATLAB 将发出警告并使现有变量的值和作用域与全局变量同步。
  • 当多个函数将特定变量声明为全局变量时,它们都引用该变量的公共实例。在一个函数中对该变量所做的任何修改都将反映在所有其他已将其声明为全局变量的函数中,确保所有函数共享相同的数据。

全局变量的优点

  • 访问全局变量 - 全局变量可以从代码的任何部分访问,这使得它们对于在不同函数、脚本或工作区之间共享数据非常有用。
  • 简便性 - 它们可以简化在函数之间传递数据,尤其是在多个函数需要访问相同数据的情况下。

全局变量的缺点

  • 修改全局变量 - 全局变量可以在代码的任何位置修改,这使得跟踪更改和调试意外行为具有挑战性。
  • 可读性 - 过度使用全局变量会使代码的可读性和理解难度降低,因为不清楚变量的值在哪里被修改。
  • 变量的作用域 - 如果在函数或脚本中使用与全局变量相同的变量名,则可能导致作用域混淆和意外后果。
  • 调试 调试变得更加困难,因为您需要追踪全局变量的值在哪里以及如何被修改。

在函数之间共享全局变量

您可以将变量声明为全局变量,然后通过在要访问或修改它的函数体中将其声明为全局变量来在不同的函数中使用它。

以下是语法

global myGlobalVar;

function myFunction()
   global myGlobalVar;
   % Access or modify myGlobalVar as needed
end

让我们来看一个实际的例子。现在创建一个新的脚本文件并命名为 **testglobalvariables.m**,并将以下代码粘贴到其中。

global globalVar;
globalVar = 42;

disp(globalVar);
testGlobalVar()

function testGlobalVar()
   global globalVar;
   globalVar = globalVar + 10;
      disp(globalVar);
end

现在在 matlab 命令窗口中键入 test 并按 Enter。

>> testglobalvariables
    42

    52

从工作区清除全局变量

全局变量拥有自己的工作区,该工作区与基工作区和函数工作区是分开的。

完成全局变量的使用后,可以使用以下命令将其从工作区清除:

clear global variable

这将从所有工作区清除全局变量。要仅从当前工作区清除全局变量,只需使用以下命令:

clear variable
广告