MATLAB Coder 中的多态性
Polymorphism in MATLAB Coder
在 MATLAB 中,从 matlab.mixin.Heterogeneous
继承基数 class 将允许很好的多态性。但是,这似乎在 Coder 中不受支持。首先,谁能确认 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 成为类型“1x2 heterogeneous Shape (Rectangle, Circle) array
”
在 Coder 中,我在构建期间收到错误“Base class 'matlab.mixin.Heterogeneous' cannot be loaded.
”。
知道如何解决这个问题吗?在我做一些疯狂的事情之前,我只想检查一下我是否遗漏了一些明显的东西。
您说得对,matlab.mixin.Heterogeneous
不支持代码生成。我向 MATLAB Coder 团队报告了您使用它的愿望和不清楚的错误消息。
对象数组 not supported 用于代码生成(请参阅项目符号 3 link)。如果您尝试:
[Circle(1), Circle(1)]
您会收到一条错误消息,说明该事实:
??? Arrays of objects are not supported for code generation.
如果没有此类支持,matlab.mixin.Heterogeneous
可能不会在代码生成中发挥太大作用。
在 MATLAB 中,从 matlab.mixin.Heterogeneous
继承基数 class 将允许很好的多态性。但是,这似乎在 Coder 中不受支持。首先,谁能确认 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 成为类型“1x2 heterogeneous Shape (Rectangle, Circle) array
”
在 Coder 中,我在构建期间收到错误“Base class 'matlab.mixin.Heterogeneous' cannot be loaded.
”。
知道如何解决这个问题吗?在我做一些疯狂的事情之前,我只想检查一下我是否遗漏了一些明显的东西。
您说得对,matlab.mixin.Heterogeneous
不支持代码生成。我向 MATLAB Coder 团队报告了您使用它的愿望和不清楚的错误消息。
对象数组 not supported 用于代码生成(请参阅项目符号 3 link)。如果您尝试:
[Circle(1), Circle(1)]
您会收到一条错误消息,说明该事实:
如果没有此类支持,??? Arrays of objects are not supported for code generation.
matlab.mixin.Heterogeneous
可能不会在代码生成中发挥太大作用。