c语言随机生成int64_t类型的数据_手把手教你代码生成(上):MATLAB代码生成

5494d4dd4f293ba851d70e3978fee500.png
FrancisZhao:专栏文章列表以及一些说明​zhuanlan.zhihu.com
28bf31d2e322bf775b4f9b276ffdd457.png
FrancisZhao:手把手教你代码生成(下):SIMULINK代码生成​zhuanlan.zhihu.com
0801e7ebfe5f061d4f0fb965f931ff0b.png

本文主要参照书《SIMULINK仿真与代码生成技术入门到精通》

MATLAB®Coder™从MATLAB代码生成可读和可移植的C和C ++代码。 它支持大多数MATLAB语言和广泛的工具箱。可以将生成的代码集成到项目中作为源代码,静态库或动态库。还可以使用MATLAB环境中生成的代码,以加快MATLAB代码计算密集型部分。

命令窗口输入“coder”,会弹出图1界面:

05737df77ec650b391f994b8503b7fec.png
图1 Coder界面

点击图1中红色方框可以加载.M文件,但是只能加载函数类文件,即文件中要有明确的输入输出,若一个文件中包含另一个文件,则要将其文档也一起加载。

加载完毕后点击右下角的 “NEXT”,进行下一步操作。

若在给出方程的一种引用方式,如图2中的Quater_to_Euler([1;0;0;0]),之后点击 “ Autodefine Input Types”,则系统可自动定义其为4*1的double矩阵。

同样也可以手动定义。点击图3中的红色方框,可以设置函数输入变量的类型。变量类型满足C语言的全部要求,也可以设置为矩阵形式,可以设置为结构体,结构体声明中可以直接输入结构体名字及变量名字。具体信息可详见蓝色的“learn more”。定义前最好知道函数输入的维数,若定义为不定维数的矩阵,影响其执行效率,增多代码数量。

6b904df1f48d60b467a409718a618e5a.png
图2 自动定义输入类型

5ef5ce5dea3053abffbd8d89863f14c0.png
图3 手动定义输入类型

设计输出后点击右下角的“NEXT”,进行下一步操作。

b3e4bc1a4869237e1f66f79d8633af0f.png
图4 程序检测界面

本步为源程序检测,给出函数的数值输入就可以在对话框显示出具体结果,点击图4中的“ Check For Issues”可以检测程序是否有错误不可以生成C文件,若有错误则根据提示进行修改。若无错误则会弹出图5的界面。界面下方弹出的是计算结果,程序界面显示的为调用次数。

7dd9be68c1477fa52a379e616c86eaac.png
图5 程序检测执行界面

M语言转化成C语言要在使用前声明变量,在上图中已经将pitch等变量声明为结构体形式,若按照M语言的矩阵声明格式,则会报错(如图6),若先将矩阵定义为m*n的零矩阵,则可避免错误

33ba99c76d960c838e6a8c00b7c7b5a4.png
图6错误声明矩阵的形式

设计输出后点击右下角的“NEXT”,进行下一步操作

49cc71ece012c17e37fea4281cf0ba8a.png
图6 代码生成设置

点击其中的”Build type“,其中有以下几种类型可选,通常我们 选择第一项。

cac770e5eb0a13c1c7fd4e80dd3174c9.png
图7 build type

其中的”Hardware Board“选项点击后可根据实际硬件需求来选择。举例如图8:

b06232de5faa241f4c83a6d09b7f0866.png
图8 硬件选择

点击图中的”more settings“,可进入代码生成选项窗口。

7e1d8b8622afb4b08711717a74f16700.png
图9 代码生成窗口

选项”Paths“是选择代码生成的位置

如图10中,第二选项”Speed”则包含数据溢出等保护函数,建议不勾选。

5f28dcd8e8565470c9c9174f3e7cf007.png
图10 Speed

图11中, 其中”Memory“选项与处理器的能力相关,其中第一个选项框与不定长的数组有关,嵌入式开发最好不选,第二个选项则与处理器的堆栈有关,要根据处理器的堆栈大小来设置。

7a7ae301cb352cec06950649d1ca8916.png
图11 Memory

图12中,选项“Code Appearance”与代码生成的风格有关,其中的“comments”部分建议勾选”MATLAB source code as comments“,方便代码的可读性。其他保持默认设置。

7251a5df48fe96ac83ba07dd95f63e54.png
图12 Code appearance

图13中,在”Custom Code“的设置中,“Standard math library” 其中的选择C89/C90,在“Code replace library”中可以选择ARM Cortex-M3,实际上我们用的STM32F7系列的内核已经为ARM Cortex-M7,但是并没有此选项。

e0839ec943a917ae2e941689d3c2f268.png
图13 硬件选择

最后设置完成后,点击“GENERATE”,无错误成功后为如下界面,其中的主函数为测试函数,并不执行具体的计算,其中的 initialize 函数为参数初始化函数,为空函数,可以自行添加相关初始化程序。

303c5d9e6fccf5d946ad4707197ed1eb.png
图14 代码生成成功后预览图

欢迎指正讨论,转载请注明,认同请点赞。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值