在MATLAB中,继承基类的matlab.mixin.Heterogeneous
将允许很好的多态性。但是,Coder似乎不支持这一点。首先,任何人都可以确认编码器不能使用matlab.mixin.Heterogeneous,如果没有,有没有人有一个很好的解决方法?
例如,我有一个名为Shape的ABC的常用设置,它来自handle和matlab.mixin.Heterogeneous。然后我有从Shape派生的Rectangle和Circle。我希望能够有一个像:
这样的数组classdef Shape < handle & matlab.mixin.Heterogeneous
classdef Circle < Shape
classdef Rectangle < Shape
harray = [Rectangle(height, width), Circle(radius)];
在Matlab中,harray成为一种类型&#34; 1x2 heterogeneous Shape (Rectangle, Circle) array
&#34;
在编码器中,我收到错误&#34; Base class 'matlab.mixin.Heterogeneous' cannot be loaded.
&#34;在构建期间。
有什么想法可以接近吗?在我做一些疯狂的事情之前,我只想检查是否有一些明显缺失的东西。
答案 0 :(得分:1)
您是正确的,代码生成不支持matlab.mixin.Heterogeneous
。我向MATLAB Coder团队报告了您使用它的想法和不清楚的错误信息。
对象数组not supported用于代码生成(请参阅该链接的子弹3)。如果您尝试:
[Circle(1), Circle(1)]
你会收到一个错误陈述这个事实:
如果没有这样的支持,???代码生成不支持对象数组。
matlab.mixin.Heterogeneous
可能在代码生成方面没有多大用处。