matlab代码移植C语言

介绍一下将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博客

  • 5
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值