Main Content

coder

打开 MATLAB Coder

说明

coder 会打开 MATLAB® Coder™。要创建工程,请在选择源文件页上提供入口函数文件名。App 会创建一个默认名称为第一个入口函数文件名的工程。要打开一个现有工程,请在 App 工具栏上,点击 Action menu icon,然后点击打开现有工程

如果安装了 Embedded Coder® 产品,该 App 将创建启用了 Embedded Coder 功能的工程。如果启用了 Embedded Coder 功能,代码生成需要 Embedded Coder 许可证。要禁用 Embedded Coder 功能,请在工程编译设置中的所有设置选项卡上,在高级下,将使用 Embedded Coder 功能设置为

coder projectname 使用现有的名为 projectname.prj 的工程打开 MATLAB Coder

coder -open projectname 使用现有的名为 projectname.prj 的工程打开 MATLAB Coder

示例

coder -build projectname 编译名为 projectname.prj 的现有工程。

示例

coder -new projectname 打开 MATLAB Coder,创建名为 projectname.prj 的工程。如果安装了 Embedded Coder 产品,该 App 将创建启用了 Embedded Coder 功能的工程。要禁用这些功能,请在工程编译设置中的所有设置选项卡上,在高级下,将使用 Embedded Coder 功能设置为

示例

coder -ecoder false -new projectname 打开 MATLAB Coder,创建名为 projectname.prj 的工程。App 创建禁用了 Embedded Coder 功能的工程,即使安装了 Embedded Coder 产品也是如此。

coder -tocode projectname -script scriptname 将名为 projectname.prj 的现有工程转换为等效的 MATLAB 命令脚本。该脚本名为 scriptname

  • 如果 scriptname 存在,coder 会覆盖它。

  • 脚本在配置对象中重新生成工程编译配置,并编译工程。脚本:

    • 创建名为 cfg 的配置对象。

    • 为函数输入类型定义变量 ARGS

    • 为全局数据初始值定义变量 GLOBALS

    • 运行 codegen 命令。运行脚本时,作为 codegen 的参量的入口函数必须位于搜索路径上。

  • 仅在运行脚本后,cfgARGSGLOBALS 才会出现在基础工作区中。

如果工程包括自动定点转换,coder 会生成两个脚本:

  • 一个是 scriptname 脚本,其中包含用于执行以下操作的 MATLAB 命令:

    • 创建与工程具有相同设置的代码配置对象。

    • 运行 codegen 命令以将定点 MATLAB 函数转换为定点 C 函数。

  • 另一个脚本,其文件名由两部分串联而成:一部分是 scriptname 指定的名称,另一部分是工程文件指定的生成的定点文件名后缀。如果 scriptname 指定了文件扩展名,则脚本文件名也包括文件扩展名。例如,如果 scriptnamemyscript.m,后缀是默认值 _fixpt,则脚本名称是 myscript_fixpt.m

    此脚本包含用于执行以下操作的 MATLAB 命令:

    • 创建一个浮点到定点转换配置对象,该对象具有与工程相同的定点转换设置。

    • 运行 codegen 命令以将浮点 MATLAB 函数转换为定点 MATLAB 函数。

对于包含定点转换的工程,在将工程转换为脚本之前,请完成定点转换过程的测试数值步骤。

示例

coder -tocode projectname 将名为 projectname.prj 的现有工程转换为等效的 MATLAB 命令脚本。它将脚本写入命令行窗口。

coder -toconfig projectname 将存储在 MATLAB Coder 工程文件中的代码配置设置导出到代码配置对象。执行此命令将返回对应于 projectname 的代码配置对象。有关不同工程文件设置下相应返回的代码配置对象的详细信息,请参阅Share Build Configuration Settings

cfg = coder('-toconfig','projectname') 返回一个配置对象,该对象包含存储在某一 MATLAB Coder 工程文件中的代码配置设置。执行此命令将返回对应于 projectname 的代码配置对象 cfg。有关不同工程文件设置下相应返回的代码配置对象的详细信息,请参阅Share Build Configuration Settings

示例

coder -typeEditor 打开一个空的“代码生成器生成类型编辑器”对话框。如果对话框已打开,此命令会将它在屏幕中前置。

请参阅Create and Edit Input Types by Using the Coder Type Editor

示例

全部折叠

使用现有的名为 my_coder_projectMATLAB Coder 工程打开 MATLAB Coder

coder -open my_coder_project

编译名为 my_coder_projectMATLAB Coder 工程。

coder -build my_coder_project

打开 MATLAB Coder 并创建名为 my_coder_project 的工程。

coder -new my_coder_project

将名为 my_coder_project.prjMATLAB Coder 工程转换为名为 myscript.m 的 MATLAB 脚本。

coder -tocode my_coder_project -script my_script.m

定义一个 MATLAB 函数 myadd,它返回两个值的总和。

function y = myadd(u,v) %#codegen
y = u + v;
end

创建 MATLAB Coder 工程 myadd.prj

  • 打开 MATLAB Coder。将 myadd 指定为入口函数。

  • 定义输入类型页中,将 uv 指定为双精度标量。

  • 生成代码页上,将编译类型设置为 MEX。对于其他工程文件设置,保留其默认值。

在 MATLAB 命令行中,运行以下命令:

cfg = coder('-toconfig','myadd.prj');

代码生成器创建 coder.MexCodeConfig 对象 cfg,其中包含存储在 myadd.prj 中的代码配置设置。

检查 cfg 的属性。

cfg = 

    Description: 'class MexCodeConfig: MEX configuration objects with C code.'
    Name: 'MexCodeConfig'

-------------------------------- Report -------------------------------

                      GenerateReport: true
                        LaunchReport: false
                   ReportInfoVarName: ''
          ReportPotentialDifferences: false

------------------------------- Debugging -----------------------------

                     EchoExpressions: true
                     EnableDebugging: false
                  EnableMexProfiling: false

---------------------------- Code Generation --------------------------

                      ConstantInputs: 'CheckValues'
                           EnableJIT: false
                 FilePartitionMethod: 'MapMFileToCFile'
                         GenCodeOnly: false
    HighlightPotentialRowMajorIssues: true
                  PostCodeGenCommand: ''
             PreserveArrayDimensions: false
                            RowMajor: false
                          TargetLang: 'C'

------------------------ Language And Semantics -----------------------

           CompileTimeRecursionLimit: 50
              ConstantFoldingTimeout: 40000
             EnableDynamicMemoryAllocation: true
    DynamicMemoryAllocationThreshold: 65536
            EnableAutoExtrinsicCalls: true
              EnableRuntimeRecursion: true
                EnableVariableSizing: true
                      ExtrinsicCalls: true
                GlobalDataSyncMethod: 'SyncAlways'
               InitFltsAndDblsToZero: true
               PreserveVariableNames: 'None'
           SaturateOnIntegerOverflow: true

------------------------- C++ Language Features -----------------------

                        CppNamespace: ''

----------------- Safety (disable for faster execution) ---------------

                     IntegrityChecks: true
                ResponsivenessChecks: true

---------------- Function Inlining and Stack Allocation ---------------

                    InlineStackLimit: 4000
                     InlineThreshold: 10
                  InlineThresholdMax: 200
                       StackUsageMax: 200000

----------------------------- Optimizations ---------------------------

                        EnableMemcpy: true
                        EnableOpenMP: true
                     MemcpyThreshold: 64

------------------------------- Comments ------------------------------

                    GenerateComments: true
                MATLABSourceComments: false

------------------------------ Custom Code ----------------------------

                    CustomHeaderCode: ''
                       CustomInclude: ''
                   CustomInitializer: ''
                       CustomLibrary: ''
                        CustomSource: ''
                    CustomSourceCode: ''
                    CustomTerminator: ''
                   ReservedNameArray: ''

输入参数

全部折叠

您要创建、打开或编译的 MATLAB Coder 工程的名称。工程名称不能包含空格。

通过将 -tocode 选项与 -script 选项结合使用来创建的脚本的名称。脚本名称不能包含空格。

输出参量

全部折叠

包含存储在 MATLAB Coder 工程文件中的配置设置的代码配置对象。

限制

  • MATLAB Online™ 不支持 coder 函数。

提示

  • 如果您是共享 Embedded Coder 许可证,请使用 coder -ecoder false -new projectname 创建一个不需要此许可证的工程。如果安装了 Embedded Coder 产品,App 将创建禁用了 Embedded Coder 功能的工程。禁用这些功能后,代码生成不需要 Embedded Coder 许可证。要启用 Embedded Coder 功能,请在工程编译设置中的所有设置选项卡上,在高级下,将使用 Embedded Coder 功能设置为

  • 创建工程或打开现有工程会导致其他 MATLAB Coder 或定点转换器工程关闭。

  • 如果您的安装不包括 Embedded Coder 产品,则不会显示 Embedded Coder 设置。但是,这些设置的值会保存在工程文件中。如果您在包含 Embedded Coder 产品的安装中打开该工程,您会看到这些设置。

  • 定点转换器工程在定点转换器中打开。要将工程转换为 MATLAB Coder 工程,请在定点转换器中执行以下操作:

    1. 点击 Action menu icon,然后选择将工程重新打开为

    2. 选择 MATLAB Coder

替代方法

  • App 选项卡上的代码生成部分中,点击 MATLAB Coder

  • 在命令行中使用 codegen 函数生成代码。

版本历史记录

在 R2011a 中推出