在系统对象中使用全局变量
全局变量是您可以在其他 MATLAB® 函数或 Simulink® 模块中访问的变量。
MATLAB 中的系统对象全局变量
对于仅在 MATLAB 中使用的系统对象,您可以在 System object™ 类定义文件中定义全局变量,其方式与在其他 MATLAB 代码中定义全局变量的方式相同(请参阅 全局变量)。
Simulink 中的系统对象全局变量
对于 Simulink 中的 MATLAB System 模块中使用的系统对象,您也可以像在 MATLAB 中一样定义全局变量。但是,要在 Simulink 中使用全局变量,如果您已经在 stepImpl
、updateImpl
或 outputImpl
调用的方法中声明了全局变量,则必须分别在 stepImpl
、updateImpl
或 outputImpl
方法中声明全局变量。
您可以按照与 MATLAB Function 模块相同的方式设置和使用 MATLAB System 模块的全局变量(参阅 数据存储 和 访问 MATLAB Function 模块中的数据存储数据)。与 MATLAB Function 模块一样,您还必须使用与 Data Store Memory 模块匹配的变量名才能在 Simulink 中使用全局变量。
例如,此类定义文件定义了一个 System object,它在每个时间步骤将矩阵的第一行增加 1。如果文件是 P 编码的,则必须包含 getGlobalNamesImpl
。
classdef GlobalSysObjMatrix < matlab.System methods (Access = protected) function y = stepImpl(obj) global B; B(1,:) = B(1,:)+1; y = B; end % Include getGlobalNamesImpl only if the class file is P-coded. function globalNames = getGlobalNamesImpl(~) globalNames = {'B'}; end end end
GlobalSysObjMatrix
对象和相关的 Data Store Memory 模块。