从Matlab到FPGA(2021.8.26)

本文详细介绍了如何将MATLAB代码转换为C++,包括使用MATLABCoder的步骤、解决C++中数组定义的问题,以及如何在C++中处理常量。此外,还分享了在VS2013中导入和配置C++项目的步骤,并讨论了C++中的宏定义和头文件使用。最后,提到了C++返回数组的方法以及解决'D_SCL_SECURE_NO_WARNINGS'错误的策略。
摘要由CSDN通过智能技术生成

1、今天将Matlab文件从m文件转成了c++,下面是具体操作步骤

(1)打开APP中的MATLAB Coder

 (2)选中所要编译的文件(这里推荐先将MATLAB中的一些c++不支持的函数(stread之类的)还有Verilog不支持的(类或者结构体或者双精度)修改)

 (3)直接NEXT

(4) 方法(1)输入函数的测试文件,方法二直接添加

(5)测试。最后在VS中能不能运行主要看这步,不过这步出错就参照我下面的注意事项。框中输入测试代码即可(调用转义为c++的MATLAB函数代码就行)

 (6)选c/c++,然后选择下面两个即可点击生成c++项目

 这里要注意,因为c++拥有标准的书写方法。比如在定义矩阵时,Matlab可以随意定义且随意删除,也就是说矩阵大小可以随意改变,这在C++中的数组中定义是不被允许的。我出现了下面这个问题,大家可以参照。我的Matlab崩溃了,后面再也没出现过这个问题,反正大家如果出现就照着这个思路改就行。

2、我们可以看到转成的c++文件可以运行,但并不能满足我们的个性化定制。比如:我们可以将一些常量转为c++的头文件,这样可以全局共享,下面的是我的修改方法:

将常数均放到头文件中定义

3、这周的事情就是学习c++与修改我的转义程序啦。从明天开始应该只有关于c++的天坑了,等完全修改完后,我们需要对c++修改成Vivado支持的c++格式。

4、c++中宏定义与头文件的使用(https://blog.csdn.net/abc_12366/article/details/79155540)

(1)宏定义与头文件

 

(2)区别

两者均是预编译文件,具体什么是预编译(本人理解就是静态的,原本就存在的可以减少编译时间,不对勿喷)我绝对没有什么区别,均类似于粘贴到c++文件中的代码,主要为了项目维护方便。

(3)什么时候用

5、VS2013中将转义后的c++文件导入到项目中操作步骤

(1)在VS中创建c++空项目

(2)将\codegen\lib\xxx(这是你Matlab项目文件名称)下的.h文件全部导入到头文件下

 (2).cpp文件全部导入到源文件下(和上一步一样)。将\codegen\lib\emtp_init\examples中的mian.cpp也导入到源文件下,然后对main.cpp中的int main()函数修改(将main.h的头文件删掉),这些应该大家都知道,修改后会出县6以后的问题,请大家继续阅读。

6、项目中不存在的头文件均在Matlab的安装路径“..\extern\include\”下 ,比如(tmwtypes.h)

7、对于“D_SCL_SECURE_NO_WARNINGS”错误,我们可以Matlab生成的所有CPP文件(只设置main函数是不行的),设置其预编译的属性“_SCL_SECURE_NO_WARNINGS”。请参考:https://blog.csdn.net/qq_41453285/article/details/103565045

8、c++返回数组的方法:

请参考(https://blog.csdn.net/u013912006/article/details/78968867#:~:text=C%2B%2B中函数是不,返回指针来实现。)

(1)c++中,函数定义参数时可以以定义或未定义大小的数组或数组的指针来作为函数参数

 (2)c++是不能直接返回数组的,但是可以返回数组指针(数组在内存中对应的地址)

参考上述地址的两种方法后。从编程的角度出发,第一种是比较规矩的写法。但第二种有点类似于前端语言(js,本人学过一点)异步的处理方法,为了节约时间,本人采用第二种方法。

大体来讲就是将数组传入函数,函数执行完再取出来(函数没有返回值

第一中方法就是传指针,数组保存的也是地址,这样就可以保持数据不被冲掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发光的沙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值