首页 > 解决方案 > Simulink 代码生成错误:类数组初始化

问题描述

我正在尝试构建一个 Simulink 函数,该函数通过使用类数组来记录系统的统计信息。但是,我无法在 Simulink 中生成类数组。我意识到我应该在 Simulink 中实例化一个数组,但是如何实例化一个类?

arrivedArray(3, 65536) = queueInfo;
analysisArray(3, 65536) = queueInfo;

在上图中,queueInfo 是我的类。这两行返回以下错误。代码生成需要在订阅之前完全定义变量到达数组。顺便说一句,这是 Matlab 建议的用于创建类数组的方法,但不知何故它不起作用。后来我试过这个:

        persistent arrivedArray
if isempty(arrivedArray)
    arrivedArray(3, 655336) = queueInfo;
end
persistent analysisArray
if isempty(analysisArray)
    analysisArray(3, 65536) = queueInfo;
end

但它也不起作用。错误İs:必须在使用持久变量“arrivedArray”之前对其进行分配。唯一的例外是使用 'isempty(arrivedArray)' 的检查,可以在分配之前执行。我理解错误,但不知道如何修复它。构造函数也没有帮助我。这是我的班级结构: 1

classdef transactionInfo
properties
    tag = uint16(0);
    arrivalTime = uint64(0);
    departureTime = uint64(0);
end
methods
    function obj = transactionInfo(v)
        if nargin > 0
            obj.tag = uint16(v);
            obj.arrivalTime = uint64(v);
            obj.departureTime = uint64(v);
        end
    end
end
end

2

classdef queueInfo < transactionInfo
properties
    length = uint16(0);
    queueID = uint8(0);
    delay = uint64(0);
end
methods
    function obj = queueInfo(v)
        if nargin > 0
            obj.length = uint16(v);
            obj.queueID = uint8(v);
            obj.delay = uint64(v);
        end
    end
end
end

有谁知道如何解决这个问题?注意:我的类结构中可能存在一些明显的错误,我是 OOP 的新手。每个建议都受到欢迎。

标签: matlaboopcode-generationsimulink

解决方案


推荐阅读