📜  MATLAB 中的全局变量

📅  最后修改于: 2022-05-13 01:54:21.310000             🧑  作者: Mango

MATLAB 中的全局变量

编程中的变量一般是存储某种类型数据的存储空间。变量的类型很多,但两种常用的类型是局部变量和全局变量。通常,每个 MATLAB函数都有自己的局部变量。但有时为了编程,我们需要在另一个函数改变局部变量的值。有时它会成为一项乏味的任务。在这里,需要全局变量。如果我们将任何变量声明为全局变量,我们就可以从任何函数访问该变量。基本上,所有函数共享相同的变量副本。在任何函数对该变量的任何值更改对于将其声明为全局的所有函数都是可见的。

在 MATLAB 中将变量设置为全局

MATLAB 中的变量通过在变量名称前写入全局命令来设置为全局变量。在第一次将任何变量声明为全局变量时,该变量被初始化为一个空的0X0 矩阵。如果在当前工作区中存在全局变量时声明了与全局变量同名的任何变量,MATLAB 会创建警告并更改该变量及其范围以与全局变量匹配。我们必须在要使用该全局变量的每个函数中编写全局命令。下面给出了一些有用的提示。

  • 如果我们想从所有工作场所清除一个全局变量,我们可以使用命令: clear global variable。
  • 另一方面,命令“ clear variable ”只会从当前工作区中清除变量,而不是从其他工作区中清除变量。

注意:这里我们声明了N个全局变量,其中第i全局变量的名字是variable_namei。一般情况下,全局变量的名称都使用大写字母,以便于区分局部变量和全局变量。

假设我们按照上述语法在函数A 中声明了一个名为global variable_name全局变量。现在,我们想在函数B 中修改该全局变量。在这种情况下,我们需要在函数B 中再次在variable_name之前编写 global 命令. 否则,它将无法工作。以下是示例。



我们需要一个脚本时和一个名为函数函数B用于例子。

  • 在两个函数之间共享全局变量

在这种情况下,我们将在脚本 Am 中声明全局变量 X,并将在函数B 中对其进行修改并尝试查看输出。

例子:

Matlab
% MATLAB code for function B 
% and save as MATLAB script name B.m
  
function B()
    global X
    % global command used 
    % as we want to modify the global
    % variable declared in A.m
    X = X*5;
end


Matlab
% MATLAB code for main script A.m
global X; % declaring global function
X = 3;
disp("value of X before modification:");
X
B(); % calling B function written above.
disp("value of X after modification:");
X


Matlab
% MATLAB Code for global variable in the 
% command window and will modify it inside 
% function B for this again we use script B.M
function B()
global X
     
% global command used 
% as we want to modify the global
% variable declared in A.m
X = X*5;
end


Matlab
% MATLAB code for  declare the global 
% variable in script A.m and will try to
% modify the variable inside function B without
% using the command 'global'function B()
 function B()
 X = 3*5;
   
 end


Matlab
% MATLAB code declare the global variable in 
% script A.m and will try to modify the variable
% inside function B without using the command 'global'
global X; 
X = 3;
  
disp("value of X before modification:");
X
  
B(); % calling B function written above.
disp("value of X after modification:");
X


MATLAB 脚本

MATLAB

% MATLAB code for main script A.m
global X; % declaring global function
X = 3;
disp("value of X before modification:");
X
B(); % calling B function written above.
disp("value of X after modification:");
X

输出:



  • 在函数和命令行之间共享全局变量

在这里,我们将在命令窗口中声明全局变量,并将在函数B 中对其进行修改并尝试查看输出。

MATLAB

% MATLAB Code for global variable in the 
% command window and will modify it inside 
% function B for this again we use script B.M
function B()
global X
     
% global command used 
% as we want to modify the global
% variable declared in A.m
X = X*5;
end

输出:

  • 如果不是在每个函数中都使用全局命令:

在这里,我们将在脚本 Am 中声明全局变量,并尝试在不使用命令'global' 的情况下修改函数B 中的变量。但是在输出中,我们将看到变量不会被修改,因为我们没有在函数B 中使用命令 'global'。

MATLAB

% MATLAB code for  declare the global 
% variable in script A.m and will try to
% modify the variable inside function B without
% using the command 'global'function B()
 function B()
 X = 3*5;
   
 end

MATLAB

% MATLAB code declare the global variable in 
% script A.m and will try to modify the variable
% inside function B without using the command 'global'
global X; 
X = 3;
  
disp("value of X before modification:");
X
  
B(); % calling B function written above.
disp("value of X after modification:");
X

输出: