介绍一下将matlab代码移植成C语言的过程。利用matlab中自带的matlab转C/C++的工具,以一个具体的实例讲解具体的步骤,以及对过程中可能会出现的问题提供了解决方案。

目录

一、matlab移植C语言步骤

1、将Matlab代码的输入输出函数删除

2、将matlab代码封装为一个函数

3、创建一个函数,说明函数输入参数的类型

4、使用matlab自带工具matlab coder进行转换

二、将得到的文件放入C工程内,得到可执行文件

1、如何将产生的多个.c.h文件组成一个工程

2、其他问题



一、matlab移植C语言步骤

以下步骤参考文章,matlab代码转c/c++详细教程 - 知乎 (zhihu.com)

1、将Matlab代码的输入输出函数删除

即将a=input(a)语句删除,是因为我们将在第二步中将matlab代码封装为一个函数,对于函数来讲它的输入输出可在函数的输入输出变量处定义。

2、将matlab代码封装为一个函数

将原始代码中输入输出语句分别放在函数定义语句中的inputArg1、outputArg1处,输入作为函数的入口参数,输出作为返回值。多个输入输出变量之间用逗号隔开。如下图所示。

function [outputArg1,outputArg2] = untitled(inputArg1,inputArg2)
%UNTITLED 此处显示有关此函数的摘要
%   此处显示详细说明此处写入你的代码(删除输入输出语句之后)无论代码多长多复杂皆放到此处
end

示例如下

-原始代码

%matlab 转 C示例程序a=input('a'); %输入函数,封装函数时需要删除
b=input('b'); %输入函数,封装函数时需要删除
c=a.*b;
d=fft(c);
plot(d);

-封装代码

%matlab 转 C示例程序
function [d]=example(a,b)c=a.*b;
d=fft(c);
plot(d);end

3、创建一个函数,说明函数输入参数的类型

此处命名为enter.m

clear all;
clc;
close all;%下面是输入参数的样例
a = [0.1 0.2 0.3 0.4];
b = [0.1 0.2 0.3 0.4];
%上面是输入参数的样例
%下面是函数的调用
[d]=example(a,b);

4、使用matlab自带工具matlab coder进行转换

-找到APP

-选择Matlab coder

-打开我们用函数封装的代码

-Next

-选择第三步编写的文件

-继续next

-检查一下

-此处没有发现错误,如果发现错误,根据提示删除一些C中无法表示的语句。继续next

上图红色方框中就是产生的所有的.c.h等文件,可以看到有6个.c文件,8个.h文件。到此处已经将matlab代码转化为C语言。接下来需要将这些文件放到同一个工程中。

二、将得到的文件放入C工程内,得到可执行文件

1、如何将产生的多个.c.h文件组成一个工程

使用visual c++简单示范:

(1)新建一个空工程,此时文件夹内没有文件

(2)将第一部分matlab coder产生的.c.h文件分别添加到source File 和Header File中,不要忘记main.h、main,c

(3)进行编译和连接

连接过程但可能会出现错误

此部分参考博文:(2条消息) 处理Matlab Coder之后, Compiler can't find "tmwtypes.h"问题_猫猫玩机器学习的博客-CSDN博客_tmwtypes.h

这是因为这个头文件不是我们转换之后生成的,而是在matlab安装后的路径下,具体在 extern\include\ 文件夹下。但按照博主的方法把这个复制到你工程文件的头文件夹下,并未解决错误。最后解决方法是在包括头文件的时候加入头文件的绝对路径,即将tmwtype.h所在位置加到头文件名字前面。

//#include "tmwtypes.h"       //修改前
#include "D:\\program Files\\MATLAB2020b\\extern\\include\\tmwtypes.h" //修改后

2、其他问题

若有同学的visual C++不能完成文件添加或者打开文件的功能,一使用就会闪退的话,参考这个博文的解决方法

(2条消息) Visual C++6.0 打开文件闪退崩溃解决方案_Shelden_的博客-CSDN博客

matlab代码移植C语言相关推荐

  1. 如何将matlab代码转为C语言(2)--在C++中调用matlab的函数

    如何将matlab代码转为C语言(2)–在C++中调用matlab的函数 在上一条博文中提供了一种直接在matlab操作中的方法,下面提供一种新的调用方法,即在C++中调用matlab中的dll文件. ...

  2. 狄利克雷分布的matlab代码实现和R语言函数调用

    主要参考的是:https://www.douban.com/note/45584915/ 和 http://www.biostatistic.net/thread-33740-1-1.html 最近需 ...

  3. 变步长龙格库塔法matlab代码,matlab 龙格库塔法 变步长龙格库塔法.doc

    河北科技大学硕士学位研究生 2012--2013学年第二学期 <Matlab语言及应用>结课论文 学 院: 信息科学与工程学院 专 业: 电路与系统 姓 名: 张利超 学 号: S2012 ...

  4. python叫什么语言-Python代码是什么语言

    Python代码是一种计算机程序设计语言,是一种动态的.面向对象的脚本语言,最初是用来编写自动化脚本的,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. Python代码是 ...

  5. 让书写的Matlab代码运行更快 Recipes for Faster Matlab Code

    Matlab 在 Research 中用得非常多,确实也是非常方便实用,只是有一个问题就是写 Matlab 代码的时候经常需要用一些比较奇怪独特的方式来思考和处理问题,否则写出来的代码虽然同样能工作, ...

  6. matlab的灰色关联,灰色关联度Matlab代码

    load x.txt %把原始数据存放在纯文本文件x.txt中,其中把数据的"替换替换成. for i=1:40 x(i,:)=x(i,:)/x(i,1); %标准化数据 end data= ...

  7. 基于MPI的H.264并行编码代码移植与优化

    2010 03 25 基于MPI的H.264并行编码代码移植与优化 范 文 洛阳理工学院计算机信息工程系 洛阳 471023 摘 要 H.264获得出色压缩效果和质量的代价是压缩编码算法复杂度的增加. ...

  8. 现有代码移植到Metro App

    现有代码移植到Metro App 一:工程配置 配置WinRT工程时要注意以下几点: 静态库工程General里的"Windows Store App Support"设成true ...

  9. 历时 7 天,我把一万行 Scala 代码移植到了 Kotlin 上!

    [CSDN编者按]去年,Google 宣布 Kotlin 正式成为 Android 官方开发语言,由此引发了迁移 Kotlin 的一股热潮.在本文中,作者分享了他在七天内把代码从 Scala 移植到 ...

最新文章

  1. linux定时任务简记
  2. LeetCode 239. Sliding Window Maximum
  3. 牛客网 在线编程 猫狗收容所
  4. c语言之动态分配空间
  5. python 第一天
  6. c# 后台传到前台乱码_前台提交数据到后台为乱码问题解决方式
  7. 关于github的一些问题汇总
  8. 绿坝老板不诚实,蒙骗政府官员
  9. kali php调试,Msfconsole使用总结
  10. 贝叶斯分析好坏_交易必读|浅谈贝叶斯分析
  11. vs2015离线安装QT的vsix工具
  12. JS反转链表 - I
  13. java开发微信公众号入门指引,jsp(java)开发微信公众平台入门
  14. 联想服务器装系统不能加载硬盘,联想电脑重装系统读不出硬盘怎么办
  15. 标准柯西分布_对柯西分布性质的进一步讨论
  16. IVX低代码平台——小程序微信红包的应用的做法
  17. Android如何设置背景图片
  18. 为任意屏幕尺寸构建 Android 界面
  19. 索引的使用以及常见索引类型,组合索引的具体使用方法。
  20. vue使用百度搜索接口实现下拉搜索效果

热门文章

  1. java实现中国象棋2:移动棋子
  2. VR和AR核心技术分别是什么?两者有什么不同?
  3. 罗斯蒙特流量计选用的误区
  4. 常用PCB快捷键总结
  5. c语言scanf中的分隔符的作用,C语言中scanf与分隔符(空格回车Tab)
  6. ICLR2022论文阅读记录 - AVHuBERT
  7. 【PyTorch】 99%程序员都不知道, 深度学习还能这样玩 (建议收藏)
  8. 平面设计界的九阳真经
  9. 26个字母的起源及含义
  10. T6400 VS T4300