Matlab程序转为C++代码

实验室项目需要,将Matlab程序转为C++代码的过程记录下来,方便后续查找和别人使用。

前言

  1. Matlab版本为R2019b,VS版本为2017;
  2. 并不是所有的Matlab函数都支持转为C++代码的,如果存在这样的函数需要自己写代码实现这样的功能
  3. 只支持Matlab函数生成,因此需要将脚本文件转化为函数进行生成

C++代码生成

1.编写好对应算法的m文件,将脚本转化为函数格式,输出需要的变量,以如下程序为例;

2.在Matlab的App模块中找到如下图所示的Matlab Coder模块;

3.点击Matlab Coder模块,选择需要转换的M文件;

4.点击Next,选择调用了转换M文件的程序(不是需要转化的程序,如下所示,test.m,几行代码即可),可以选择自动定义变量的数据类型、大小等,也可以手动定义;

5.点击Next,如果此时有无法转化的Matlab自带的函数,会报错提示无法转化,需要将调用的函数重新编写;
6.如果不存在无法转化的函数,则会跳出以下界面,继续选择调用了转换M文件的程序(不是需要转化的程序),点击Check for Issues,Matlab会自动检测代码的正确性,三个全绿即可通过(如果确保代码没有问题,第三个提示错误也可以通过,前两个正确即可);

7.点击Next,这一步非常重要,前四项按照需要进行选择,再硬件选择一栏需要选择好移植的硬件,可以选择各种硬件,如果没有满足要求的选项则需要选择None-select device below,然后会出现Device选项,按照需要进行选择,我们的项目需求为Intel芯片的win64电脑(Inetl和AMD的芯片需要区别选择),之后在Toolchain栏选择编译工具,本项目选择VS2017进行编译(VS不同版本对于生成的代码格式要求不同,需要认真选择),最后点击Generate生成所需代码;

8.生成的文件如下图,项目所需的app文件和h文件已经生成,按照提示就可以找到所需的文件;


9.Matalb会给出一个生成文件调用的示例文件,在examples文件夹中,如下图,可按照示例文件格式进行代码编写

后记

在实际的项目中,会调用需要比较复杂的Matlab函数,此时会需要较多的dll文件,在VS中建立项目会发现dll文件缺失或者找不到的现象,这是因为Matlab在生成C项目文件时没有将需要的dll文件添加过来,需要的dll文件在 D:\Softwares\MatlabR2019b\bin\win64 路径下,可以用everything工具进行查找,具体有两种解决方法:

  1. 直接将所有的dll文件复制过来,这会使得项目太大,不太可取
  2. 直接运行VS的项目文档,此时VS会报缺失的dll文件,直接在上述文件夹下查找然后添加到项目中即可

Matlab程序转为C++代码相关推荐

  1. 均值文件转matlab,LMD局域均值分解的matlab程序及示例代码

    文件夹包含,找出纯调频函数,计算瞬时幅值,瞬时频率的函数等 %%%%%%%%%%%主程序%%%%%%%%%% %lmd1原始版 %通过emd.m的三次样条+镜像延拓求出上下包络及均值 %局域均值函数= ...

  2. 关联矩阵古林法的matlab代码,[转载][原创]灰色关联分析及Matlab程序实现

    灰色系统理论由我国著名学者邓聚龙教授于1982提出.灰色关联分析是灰色系统理论的一个分支,应用灰色关联分析方法对受多种因素影响的事物和现象从整体观念出发进行综合评价是一个被广为接受的方法. 一.灰色关 ...

  3. hilbert曲线序编码matlab,Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码

    Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码 王笋,徐小双(华中科技大学控制科学与工程系,武汉 430074) 摘 要 Hilbert曲线是一种重要的图像处理工具,在图像处理,特别是图 ...

  4. 一种基于局部线性嵌入的半监督方法——半监督局部线性嵌入(SSLLE),MATLAB程序代码

    具体内容大家可以看一下参考文献的原文,这里附上我的自己编的MATLAB程序代码: % SSLLE算法 % [Y] = sslle(X,K,d,l,r) % X :data as D x N matri ...

  5. 艾特肯法方程解matlab程序,牛顿迭代法matlab代码

    牛顿法 迭代公式: x(k1) xk [2 f (x(k) )]1f (x(k) ) Matlab 代码: function [x1,k] =newton(x1,eps) hs=inline('(x ...

  6. 尺度不变特征变换(SIFT算法)Matlab程序代码测试例子的说明(Lowe的代码)

    目前网络上可以找到的关于SIFT算法Matlab测试代码的资源就是: 1 加拿大University of British Columbia 大学计算机科学系教授 David G. Lowe发表于20 ...

  7. 3.正态分布概率模型下的最小错误率贝叶斯决策MATLAB程序代码

    一.题目: [题目]:已知三个类别分别为W1:[0,0]T,[2,1]T,[1,0]T; W2:[-1,1]T,[2,0]T,[-2,-1]T; W3:[0,-2]T,[0,-1]T,[1,-2]T. ...

  8. 齿轮-转子-轴承系统动力学matlab程序代码

    齿轮-转子-轴承系统动力学matlab程序代码 详询TB机械动力学超市 感谢关注 期待你的到来

  9. 齿轮系统动力学模型matlab程序代码

    齿轮系统动力学模型matlab程序代码, 详询TB机械动力学超市! 谢谢关注

  10. Matlab代码 多时间尺度优化调度 MATLAB程序含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度

    Matlab代码 多时间尺度优化调度 MATLAB程序,论文复现<含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度> 是一篇多时间尺度的优化运行程序 有需要的可以先知网阅读一下文章 ID: ...

最新文章

  1. mysql命令程序_MySQL命令大全经典版
  2. 项目: 用封装的方法实现飞机大战游戏
  3. 表单开发(一):获取文本框和密码框数据 用户登录网页
  4. Javascript模块化编程require.js的用法
  5. 阿里为什么建议给MVC三层架构多加一层Manager层?
  6. wordpress后台404页面
  7. 剑指offer之二叉搜索树的第K个节点
  8. 小货车DataAdapter对象 1129
  9. js调用android手写输入法,手机进入页面,js调取软键盘
  10. drupal显示图片_Drupal在多样性和包容性方面显示领导力
  11. Exchange 2007r2 二,动手安装
  12. 数组求和forEach方法
  13. Nginx 原理和架构 | 原力计划
  14. 我想牵你的手,从心动到古稀
  15. 外语学习的真实方法及误区(描述得非常深刻)
  16. 最像windows的linux系统,盘点酷似Windows的Linux发行版
  17. Java实现字符串逆序输出
  18. C语言数据结构理解语句L = (LNode * )malloc(sizeof(LNode));
  19. 高德地图开放平台概览
  20. mentohust mac安装

热门文章

  1. 2019小程序没必要做了_2019年,小程序还要不要做
  2. C++多线程编程(真实入门)
  3. linux 权限 代码,linux 管理权限(示例代码)
  4. apache加nginx加Php,Apache/Nginx为PHP设置、添加$_SERVER服务器环境变量
  5. 怎么关闭eureka的服务_SpringCloud之Eureka
  6. 网络配置_Linux CentOS怎么配置网络
  7. python局域网嗅探_Python_sniffer(网络嗅探器)
  8. 线性代数及其应用(第三版)1.1节习题解答
  9. Arista CloudVision软件部署
  10. python调用r语言函数_Python 中使用R语言