MATLAB编码器中的多态性

时间:2015-08-27 19:58:41

标签: matlab polymorphism matlab-coder

在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;在构建期间。

有什么想法可以接近吗?在我做一些疯狂的事情之前,我只想检查是否有一些明显缺失的东西。

1 个答案:

答案 0 :(得分:1)

您是正确的,代码生成不支持matlab.mixin.Heterogeneous。我向MATLAB Coder团队报告了您使用它的想法和不清楚的错误信息。

对象数组not supported用于代码生成(请参阅该链接的子弹3)。如果您尝试:

[Circle(1), Circle(1)]

你会收到一个错误陈述这个事实:

  

???代码生成不支持对象数组。

如果没有这样的支持,

matlab.mixin.Heterogeneous可能在代码生成方面没有多大用处。