概述
介绍一下将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安装后的路径下,具体在 externinclude 文件夹下。但按照博主的方法把这个复制到你工程文件的头文件夹下,并未解决错误。最后解决方法是在包括头文件的时候加入头文件的绝对路径,即将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语言的全部内容,希望文章能够帮你解决matlab代码移植C语言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复