主要内容

转变代码根命令到等效MATLAB编码器项目

您可以使用代码根命令-项目转换的选项代码根命令MATLAB®CODER™项目文件。然后,您可以使用另一个从项目文件中生成代码代码根命令或MATLAB编码器应用程序。

例如,转换一个代码根带有输入参数的命令input_arguments到项目文件myproject.prj, 跑:

代码根input_arguments-项目myproject.prj

输入参数代码根包括:

  • 入口点功能的名称

  • 输入类型定义通过使用-args选项

  • 代码生成选项,包括配置对象中指定的参数

  • 生成代码中包含的自定义源文件的名称

您也可以使用-项目转换不完整的选项代码根命令到项目文件。例如,创建一个项目文件myprojectTemplate.prj仅包含配置对象中存储的代码生成参数CFG, 跑:

代码根-configCFG-项目myprojectTemplate.prj
myprojectTemplate.prj不包含入口点功能或输入类型的规格。因此,您无法从此项目文件中生成代码。你可以打开myprojectTemplate.prj在里面MATLAB编码器应用程序并将其用作模板,以创建可用于生成代码的完整项目文件。

笔记

运行代码根命令-项目选项不会生成代码。它仅创建项目文件。

示例:转换一个完整代码根命令到项目文件

定义MATLAB函数,Mimadd,这返回两个值的总和。

功能y = myadd(u,v)%#codegeny = u + v;结尾

创建一个Coder.CodeConfig生成静态库的对象。放TargetLang'C ++'

cfg = coder.config('lib');cfg.targetlang ='C ++';

在MATLAB命令行,创建并运行代码根命令。指定Mimadd作为入口点功能。将输入指定为Mimadd作为类型的可变大小矩阵双倍的其尺寸是无限的。指定CFG作为代码配置对象。包括-项目转换的选项代码根命令MATLAB编码器名称的项目文件myadd_project.prj

代码根-configCFGMimadd-args{coder.typeof(1,[Inf,inf]),coder.typeof(1,[inf,inf])}-项目myadd_project.prj
项目文件“ Myadd_project.prj”已成功创建。开放项目

代码生成器创建项目文件myadd_project.prj在当前的工作文件夹中。跑步代码根-项目选项不会生成代码。它仅创建项目文件。

生成代码myadd_project.prj通过使用另一个代码根命令。

代码根myadd_project.prj

代码生成器生成C ++静态库功能Mimadd在里面工作\ codegen \ lib \ myadd文件夹,哪里工作是您当前的工作目录。

示例:转换一个不完整的代码根命令到模板项目文件

创建一个Coder.CodeConfig生成静态库的对象。放TargetLang'C ++'

cfg = coder.config('lib');cfg.targetlang ='C ++';

在MATLAB命令行,创建并运行代码根命令。指定CFG作为代码配置对象。包括-项目转换的选项代码根命令MATLAB编码器名称的项目文件myprojectTemplate.prj

代码根-configCFG-项目myprojectTemplate.prj
项目文件“ myprojectTemplate.prj”已成功创建。开放项目

您现在可以打开myprojectTemplate.prj在里面MATLAB编码器应用程序并将其用作模板,以创建可用于生成代码的完整项目文件。

限制

当您使用代码根命令-项目选项,这些限制适用:

  • 导出CodeTemplatea的参数Coder.embeddedCodeConfig不支持对项目文件的对象。金宝app

  • 假设你代码根生成MEX函数使用的命令Coder.constant定义一个常数输入是fi(定点设计师)目的OBJ

    肯定fi对象属性由其他属性启用。当您构建一个fi对象,这些属性设置为其默认值,除非您明确修改它们。在OBJ,您设置了一个或多个未启用非默认值的属性。看FI对象属性(定点设计师)

    你转换了代码根通过使用-项目选项。您构建项目文件并生成MEX函数。当你通过OBJ当对生成的MEX函数并运行MEX的恒定输入参数时,MEX可能会出现错误。

    要解决此问题,您必须设置OBJ在将其传递给MEX函数之前,该值未启用其默认值。为此,定义一个新的fi目的obj_new

    a = mat2str(obj);obj_new = eval(a);

    经过obj_new作为生成的MEX函数的恒定输入。

也可以看看

相关话题