编译环境:matlab2023Ra+VS2022
目标:利用matlab coder 完成对下面四个matlab函数C语言代码的转换
一、代码转换
1、 菜单栏-APP-matlab coder
(如果没有找到,可以点击倒三角寻找)
2、选中要转换的函数,添加进去
3、添加后如下图所示,点击next
4、核查代码出现的问题
如果代码没有问题,直接进行下一步,如果代码报错,点击Review查看问题所在并且修改代码,修改完成后点击next进入下一步;
5、修改报错问题代码
可以看到代码中出现三个问题,均是因为C语言中变量(DataLFP_step_0)在使用时候是不允许未定义而直接使用的;在对应的位置修改即可;例如可以提前定义DataLFP_step_0变量:
DataLFP_step_0 = zeros(16,10000);
6、定义输入数据类型
可以手动输入数据类型,也可以自动识别数据类型,推荐使用自动识别数据类型,会根据主函数自动识别输入的数据类型;之后点击next;
7、运行代码
检查代码是否存在问题,如果没问题点击next,如果有问题按照提示继续修改问题;
8、修改问题代码
由提示可知,报错是因为结构体定义有问题,修改后问题解决;点击next;
9、生成代码
根据自己的要求设置对应的参数,点击Generate生成代码!
10、利用VS2022创建工程
找到转换后的代码文件夹,将转换好的代码添加到工程里面(.h,.c文件);
main.h,main.c在examples文件中,也要添加进来
另外需要将matlab中的tmwtypes.h头文件添加进来;该文件在MATLAB\extern\include路径下
二、问题处理
为了减少matlab代码转换过程中出现的问题,matlab代码编程尽可能符合C语言的风格,注意一下几个问题,能够减少问题出现。
1、变量提前定义
matlab变量可以直接使用,但是在C/C++中需要先定义变量,然后才能使用;
例如转换过程中第五步:DataLFP_step_0 = zeros(16,10000);
2、注意变量的声明周期
C语言中,变量离开定义域所在空间后无法再次使用;
3、load加载数据函数无法使用
C/C++无法使用load加载matlab数据,如何才能使用C/C++加载matlab数据呢?
可以参考:使用C/C++读取matlab中.mat格式的数据-CSDN博客