You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Simulink中调用MATLAB自定义类的实例与方法?

解决方案

方法1:用persistent变量在Simulink函数块复用已实例化对象

修改Simulink中MATLAB Function块的compute函数,把类对象声明为persistent,首次运行时从基础工作区加载,后续复用该对象:

function [y]=compute(x)
    persistent P1 P2 P10
    % 首次执行时从工作区加载已实例化的对象
    if isempty(P1)
        P1 = evalin('base','P1');
        P2 = evalin('base','P2');
        P10 = evalin('base','P10');
    end
    
    a(1)=P1.method1(x+2);
    a(2)=P2.method1(x+2);
    a(3)=P10.method1(x+3);
    y=mean(a);
end

persistent变量会在模型运行周期内保留对象状态,无需重复实例化;evalin('base',...)用于读取基础工作区的预实例化对象。

方法2:正确配置MATLAB System Block

如果之前使用MATLAB System Block失败,可自定义System类,在初始化阶段加载对象,后续调用方法:

  1. 创建MATLAB System类:
classdef ExampleSystem < matlab.System
    properties (Access = private)
        P1
        P2
        P10
    end
    
    methods (Access = protected)
        function setup(obj)
            % 模型初始化时加载工作区的对象,仅执行一次
            obj.P1 = evalin('base','P1');
            obj.P2 = evalin('base','P2');
            obj.P10 = evalin('base','P10');
        end
        
        function y = step(obj,x)
            % 每次仿真步调用对象方法
            a(1)=obj.P1.method1(x+2);
            a(2)=obj.P2.method1(x+2);
            a(3)=obj.P10.method1(x+3);
            y=mean(a);
        end
    end
end
  1. 在Simulink中添加MATLAB System Block,选择上述ExampleSystem类即可,模型运行时setup仅执行一次,全程复用已加载的对象。

方法3:用Data Store Memory共享类对象

适合多模块共享同一类对象的场景:

  1. 在Simulink中添加Data Store Memory模块,设置数据名称(如ClassObjStore),数据类型选择Bus: <object>,关联你的ExampleClass;若存储多个对象,可改用结构体类型。
  2. 模型启动前,在工作区创建存储结构体:ClassObjStore.P1 = P1; ClassObjStore.P2 = P2; ClassObjStore.P10 = P10;,再用Data Store Write模块在模型初始化阶段写入数据存储区。
  3. 在MATLAB Function块中读取并复用对象:
function [y]=compute(x)
    persistent objStore
    if isempty(objStore)
        objStore = coder.load('ClassObjStore');
    end
    
    a(1)=objStore.P1.method1(x+2);
    a(2)=objStore.P2.method1(x+2);
    a(3)=objStore.P10.method1(x+3);
    y=mean(a);
end

内容的提问来源于stack exchange,提问作者Hamzalihi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:35:25