我是靠谱客的博主 典雅冬日,最近开发中收集的这篇文章主要介绍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安装后的路径下,具体在 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语言所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部