主要内容

中指定对象作为输入MATLAB编码器应用程序

MATLAB®编码器™App,指定值类对象的输入类型:

  1. 定义值类。例如,定义一个类myRectangle

    classdefmyRectangle属性长度;宽度;结束方法函数obj = myRectangle(l,w)如果Nargin > 0 obj。长度= l;obj。宽度= w;结束结束函数Area = calcarea(obj)长度* obj.width;结束结束结束

  2. 定义一个函数,将值类的对象作为输入。例如:

    函数Z = getarea(r)% # codegenZ = calcarea(r);结束

  3. 在应用程序中,为创建一个项目getarea.在定义输入类型页,以下列方式之一指定对象的类型:

自动定义对象输入类型

  • 编写测试文件getarea_test属性的对象myRectangle类,并将其传递给getarea.例如:

    rect_obj = myRectangle(4,5);Rect_area = getarea(rect_obj);disp (rect_area);

  • 在应用程序中定义输入类型页,指定测试文件getarea_test

  • 点击自动定义输入类型

举例说明

如果你提供了一个值类的对象,应用程序使用示例对象的属性的大小和类型。

  1. 在MATLAB中定义一个值类的对象myRectangle

    rect_obj = myRectangle(4,5)

  2. 在应用程序中定义输入类型页面,点击让我直接输入输入或全局类型

  3. 单击输入参数右侧的字段r

  4. 选择通过实例定义

  5. 输入rect_obj或者从工作区变量列表中选择它。

    应用程序从示例对象中确定属性及其大小和类型。

或者,您可以提供值类的名称,myRectangle,或编码器。ClassType对象。定义编码器。ClassType对象,使用coder.typeof.例如:

  1. 在MATLAB中定义a编码器。ClassType具有相同属性的对象rect_obj

    T = code .typeof(rect_obj)

  2. 在应用程序中,提供t举个例子。

若要更改属性的大小或类型,请单击属性右侧的字段。

类型定义和类定义文件的一致性

当你生成代码时,你在应用程序中定义的属性必须与类定义文件中的属性一致。如果类定义文件具有代码不使用的属性,则应用程序中的类型定义不必包含这些属性。代码生成器删除代码不使用的属性。

使用对象作为入口点函数输入的限制

作为对象的入口点函数输入有以下限制:

  • 作为入口点函数输入的对象必须是值类的对象。句柄类的对象不能是入口点函数输入。因此,包含句柄类的值类不能作为入口点函数输入。

  • 对象不能是全局变量。

  • 如果对象具有重复的属性名,则不能将其用于编码器。常数.在以下情况下,子类的对象中会出现重复的属性名:

    • 子类有一个与父类的属性同名的属性。

    • 子类派生于对属性使用相同名称的多个超类。

    有关MATLAB何时允许重复属性名的信息,请参见子类化多个类

另请参阅

相关的话题