matlab - 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 的新手。每个建议都受到欢迎。
解决方案
推荐阅读
- flutter - 在颤动中乘以手势检测器
- mysql - laravel 中的 vue 组件仅在服务器上不起作用
- spring-boot - Springdoc GroupedOpenApi 不遵循使用 OperationCustomizer 设置的全局参数
- java - Camunda BPM:CSRFPreventionFilter:无效的 HTTP 标头令牌
- c++ - 从文件中读取多个字节并存储它们以在 C++ 中进行比较
- ionic-framework - 我在 ionic 的应用浏览器中使用。它在移动浏览器而不是应用程序上打开 url
- python - pycharm 项目:源根目录和导入未更新?
- c# - 将 EF Core 3.1 转换为存储字符串枚举值,而不是整数
- android - FirebaseUI-Android - oAuth 登录后自定义 Chrome 选项卡不会自动关闭(Microsoft 和 Apple)
- database - MongoDB 分片,MongoDB 路由器的“mongos”是否存在瓶颈?