目录

使用 MATLAB Coder App 生成 MEX 函数的工作流

使用 MATLAB Coder App 生成 MEX 函数

配置工程设置

编译 MATLAB Coder 工程


使用 MATLAB Coder App 生成 MEX 函数的工作流

步骤 操作 详细信息
1

设置 MATLAB® Coder™ 工程。

设置MATLAB Coder工程
2

指定编译配置参数。将 Build type 设置为 “MEX”。

配置工程设置
3

编译工程。

编译MATLAB Coder工程

MATLAB Online™ 不支持 MATLAB Coder App。要在 MATLAB Online 中生成 MEX 函数,可以使用codegen命令。

使用 MATLAB Coder App 生成 MEX 函数

该例子说明如何使用 MATLAB Coder App 从 MATLAB 代码生成 MEX 函数。

创建入口函数

在一个本地可写文件夹中,创建 MATLAB 文件 mcadd.m,其中包含:

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

创建测试文件

在同一本地可写文件夹中,创建 MATLAB 文件 mcadd_test.m,该文件调用具有示例输入的 mcadd。示例输入是类型为 int16 的标量。

function y = mcadd_test
y = mcadd(int16(2), int16(3));

打开 MATLAB Coder App

在 MATLAB 工具条的 App 选项卡上,点击Code Generation下的MATLAB Coder App图标。该App会打开Select Source Files页面。

指定源文件

  1. Select Source Files页面中,键入或选择入口函数 mcadd 的名称。

    该 App 将使用默认名称 mcadd.prj 创建一个工程。

  2. 点击 Next 以转到 Define Input Types 步骤。该 App 将分析函数以查找编码问题并确定代码生成就绪情况。如果 App 发现问题,它将打开 Review Code Generation Readiness 页面,可以在其中查看和解决问题。在此示例中,由于 App 没有检测到问题,因此将打开 Define Input Types 页面。

定义输入类型

由于C使用静态类型,MATLAB Coder 必须在编译时确定 MATLAB 文件中所有变量的属性。必须指定所有入口函数输入的属性。根据入口函数输入的属性,MATLAB Coder 可以推断 MATLAB 文件中所有变量的属性。

指定 MATLAB Coder 用来自动定义 u 和 v 的类型的测试文件 mcadd_test.m:

  1. 输入或选择测试文件 mcadd_test.m。

  2. 点击 Autodefine Input Types

    测试文件 mcadd_test.m 使用示例输入类型调用入口函数 mcadd。MATLAB Coder推断输入 u和v为 int16(1x1)。

  3. 点击Next以转到Check for Run-Time Issues步骤。

检查运行时问题

        Check for Run-Time Issues 步骤从入口函数生成 MEX 文件,然后运行MEX函数并报告问题。此步骤是可选的。不过,建议最好执行此步骤。可以检测并解决在生成的C代码中更难诊断出来的运行时错误。

  1. 要打开 Check for Run-Time Issues对话框,请点击 Check for Issues 箭头 

    App使用mcadd_test 填充测试文件字段,该测试文件用于定义输入类型。

  2. 点击 Check for Issues

    App 将生成一个 MEX 函数。它运行测试文件,将对 mcadd 的调用替换为对 MEX 函数的调用。如果 App 在 MEX 函数生成或执行过程中检测到问题,它将提供警告和错误消息。可以点击这些消息,导航到有问题的代码并修复问题。在本示例中,App 未检测到问题。

  3. 点击 Next 以转到 Generate Code 步骤。

生成 MEX 函数

  1. 要打开 Generate 对话框,请点击 Generate 箭头 

  2. 在 Generate 对话框中,将 Build type 设置为 “MEX”,将 Language 设置为C。对其他工程编译配置设置使用默认值。

  3. 点击 Generate

    App 指示代码生成成功。它在页面左侧显示源 MATLAB 文件和生成的输出文件。在 Variables 选项卡上,它显示有关 MATLAB 源变量的信息。在 Target Build Log 选项卡上,它会显示编译日志,包括编译器警告和错误。

    MATLAB Coder 编译工程,并默认在当前文件夹中生成 MEX 函数 mcadd_mex。MATLAB Coder 还会在名为 codegen/mex/mcadd 的子文件夹中生成其他支持文件。MATLAB Coder 使用 MATLAB 函数的名称作为生成文件的根名称。它为 MEX 文件创建一个特定于平台的扩展名。

  4. 要查看代码生成报告,请点击 View Report

  5. 点击 Next 打开 Finish Workflow 页面。

查看 Finish Workflow 页面

        Finish Workflow 页面指示已成功生成代码,还提供工程摘要以及指向生成的输出的链接。

配置工程设置

要打开工程设置对话框,请执行下列操作:

  1. 要打开 Generate 对话框,请点击 Generate 箭头 

  2. 点击 More settings

要更改工程设置,请点击包含要更改的设置的选项卡。例如,要更改 Saturate on integer overflow 设置,请点击 Speed 选项卡。

MEX 函数使用一组与库和可执行文件不同的配置参数。将输出类型从 “MEX Function” 更改为 “Source Code ”“Static Library”、“Dynamic Library” 或 “Executable” 时,请验证这些设置。

某些配置参数与 MEX 和独立代码生成相关。如果在输出类型为 “MEX Function” 时启用这些参数中的任何参数,并且要在 C/C++ 代码生成中也使用相同的设置,则必须为 “C/C++ Static Library”、“C/C++ Dynamic Library” 和 “C/C++ Executable” 再次启用它。

编译 MATLAB Coder 工程

要使用指定的设置编译工程,请在 Generate Code 页面上点击 Generate。当 MATLAB Coder App 编译工程时,它会显示编译进度。编译完成后,App 会在 Target Build Log 选项卡上提供有关编译的详细信息。

如果启用了代码生成报告或发生编译错误,则 App 会生成报告。该报告提供有关最近编译的详细信息,并提供指向该报告的链接。

要查看报告,请点击 View report 链接。该报告提供指向 MATLAB 代码和生成的 C/C++ 文件的链接,并提供 MATLAB 代码中变量的编译时类型信息。如果发生编译错误,报告将列出错误和警告。

另请参阅

  • 配置编译设置

使用 MATLAB Coder App生成MEX函数相关推荐

  1. MATLAB及app designer中函数:定义与调用

    本文介绍MATLAB 及其APP designer 中函数定义和调用的相关方法和注意事项: 文章结构如下: 1.脚本文件(.m)中函数调用: A.同一脚本文件下,函数定义在脚本末端 B.不同脚本文件, ...

  2. MATLAB/C语言混编的第一步,在MATLAB R2017b中生成mex文件

    Matlab在科学计算方面的优越性使其成为科研人员的必备软件之一,搭载了大量复杂工具箱,日益优雅的代码编辑器让MATLAB R2017b彻底替代了之前的先辈版本.然而MATLAB毕竟是一个商业化的数学 ...

  3. 使用MATLAB Coder将工具箱中的系统对象转换为C代码

    使用MATLAB Coder将工具箱中的系统对象转换为C代码 现在你一个脚本文件,这个文件是个完整的程序,有输入也有输出,运行这个脚本文件会得到你想要的结果.在这个文件里你使用了某个工具箱中的系统对象 ...

  4. 基于MATLAB Coder将matlab代码转换成C代码

    MATLAB Coder可以从MATLAB代码生成独立的.可读性强.可移植的C/C++代码.本文基于matlab2015a编制,但是也适用于matlab 2014~2016的版本. 1. 使用MATL ...

  5. Matlab代码转换为C重要步骤(Matlab coder (2021a))

    Matlab转换为C 自动匹配函数入口参数类型时,需要提前把测试函数跑一遍. Matlab coder (2021a)生成C文件精简方法: 1.把设置中的Speed选项中Saturate on int ...

  6. Matlab中eig内置函数转为C语言

    本文记录一下如何将MATLAB中的eig函数转为C语言,即通过C语言求解矩阵的特征值与特征向量.[V,D]=eig(Rx)中V为矩阵Rx的特征向量,D为矩阵的特征值.其中Rx维度为12*12的复矩阵. ...

  7. matlab 线性索引 转换,自己编写的 matlab 线性索引转换下标 函数

    matlab自带的线性索引转换下标函数必须指定下标个数,也就是数据的维度.这在实际应用中受到了限制. (什么是线性索引,什么是下标,不再介绍,相信你如果搜到了本贴,必然知道这两个概念) % 原函数: ...

  8. 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤

    MATLAB Coder可以从MATLAB代码生成独立的.可读性强.可移植的C/C++代码. 使用MATLAB Coder产生代码的3个步骤:准备用于产生代码的MATLAB算法:检查MATLAB代码的 ...

  9. 记录用matlab APP中matlab coder的简单步骤

    基本脚本撰写: 第一步:脚本准备 目前理解需要两个部分:(1)调用代码 (2)算法代码 随便写个数组,然后调用一个简单排序算法,示例代码如下, clear all; clc; a=[2.1 24 14 ...

最新文章

  1. 可视化与遗留系统的微服务改造
  2. 【NLP】图解Transformer(完整版)
  3. 命令行执行php脚本中的$argv和$argc配置方法
  4. epoll, NIO,AIO
  5. .net java xml_java.net.MalformedURLException – 在通过StAX解析XML文件时
  6. scratch高级进阶的游戏项目分享:(知识的综合应用),含项目源文件百度云盘链接
  7. c语言汉字属于什么类型_C语言为什么需要定义数据类型
  8. 1946年谁提出存储程序通用计算机,存储程序原理是由谁于1946年提出的,它明确了计算机硬件组成的五大部分(B)...
  9. css中aspect,CSS属性之aspect-ratio
  10. .Net与DirectX结合制作泡泡屏保
  11. java环境变量配置 JDK环境变量
  12. excel数据个数统计问题
  13. 第三方支付公司怎么收取手续费
  14. java IO编程详解
  15. Geoffrey Hinton:放弃反向传播,我们的人工智能需要重头再来
  16. 人物志 | 美团女技术总监任登君:不要给自己的人生设限
  17. LabVIEW热敏电阻温度计程序
  18. 英语字母c的语言教案,幼儿园小班英语单词教案五篇
  19. Masonry介绍与使用实践:快速上手Autolayout
  20. win10安装CH341SER.INF 失败 且没有COM口问题(德飞莱CH340T)

热门文章

  1. 数据结构—C语言:校园导航系统(最短路径两种算法:深度搜素以及Dijkstra)
  2. 华为linux系统能用Cad么,华为平板能装cad画图吗 华为平板可以用cad软件吗?
  3. Python之人民币与美元的换算
  4. android 代码控制TextView的字体加粗
  5. 设置电脑wifi和网线同时访问网络
  6. React — input标签输入中文的拼音时候会触发onChange事件解决
  7. 今日分享非技术之图片大小不得超过80kb
  8. 2022年,英文科技论文写作与学术报告期末考试答案(仅供参考)
  9. java 填充字符串_Java字符串右补齐——String.format
  10. BUCTOJ2021年ACM竞赛班训练九题解