在命令行生成单精度C代码
这个例子展示了如何从双精度MATLAB生成单精度C代码®命令行上的代码。
先决条件
要完成此示例,请安装以下产品:下载188bet金宝搏
MATLAB
MATLAB编码器™
定点设计师™
C编译器
看到金宝app支持编译器。
你可以使用
墨西哥人设置
更改默认编译器。看到更改默认编译器。
创建一个文件夹并复制相关文件
创建一个本地工作文件夹,例如:
c: \ ex_2ndOrder_filter
。改为
docroot \工具箱\ fixpoint \例子
文件夹中。在MATLAB命令行输入:Cd (fullfile(docroot, 'toolbox', 'fixpoint', 'examples'))
复制
ex_2ndOrder_filter.m
而且ex_2ndOrder_filter_test.m
文件到您的本地工作文件夹。类型 的名字 描述 函数代码 ex_2ndOrder_filter.m
MATLAB入口函数 测试文件 ex_2ndOrder_filter_test.m
测试的MATLAB脚本
ex_2ndOrder_filter.m
确定输入参数的类型
来确定输入参数的类型x
,使用coder.getArgTypes
运行测试文件ex_2ndOrder_filter_test.m
types = code . getargtypes (“ex_2ndOrder_filter_test”,“ex_2ndOrder_filter”);
测试文件运行并显示每个输入信号的过滤器输出。coder.getArgTypes
的输入类型x
是1x256的双倍。
生成并运行单精度MEX以验证数值行为
在生成单精度C代码之前,生成一个可用于验证所生成的单精度代码行为的单精度MEX函数。要表示需要单精度MEX代码,请使用
-singleC
选择。codegen-singleCex_2ndOrder_filterarg游戏类型报告
在MEX生成期间,代码生成器检测单精度转换问题。在生成C/ c++代码之前,修复这些问题。这个例子没有单精度转换问题。
生成的MEX接受单精度和双精度输入。您可以使用相同的测试文件来运行双精度MATLAB函数和单精度MEX函数。不需要修改测试文件就可以调用单精度MEX函数。
运行测试文件
ex_2ndOrder_filter_test.m
。该文件调用双精度MATLAB函数ex_2ndOrder_filter.m
。ex_2ndOrder_filter_test
测试文件运行并显示每个输入信号的过滤器输出。
运行测试文件
ex_2ndOrder_filter_test
,取代对双精度的调用ex_2ndOrder_filter
函数调用单精度ex_2ndOrder_filter_mex
函数。coder.runTest (“ex_2ndOrder_filter_test”,“ex_2ndOrder_filter”)
测试文件运行并显示每个输入信号的过滤器输出。单精度MEX函数产生的结果与双精度MATLAB函数相同。
生成单精度C代码
创建用于生成C静态库、动态库或可执行文件的代码配置对象。
CFG = code .config(“自由”);
要生成单精度C代码,调用
codegen
与-singleC
选择。启用代码生成报告的生成。codegen配置cfg-singleCex_2ndOrder_filterarg游戏{类型{1}}报告
查看已生成的单精度C代码
要查看C代码生成的代码生成报告,请单击查看报告链接。
在生成的代码窗格中,单击ex_2ndOrder_filter.c
。
双精度变量有类型
浮动
在C代码中。该指数
我
整数形式。
查看潜在的数据类型问题
当你生成单精度代码时,codegen
允许在代码生成报告中突出显示潜在的数据类型问题。如果codegen
不能删除双精度操作,报告强调了导致该操作的MATLAB表达式。
单击代码的见解选项卡。扩大潜在的数据类型问题。没有双精度操作表明没有双精度操作。
另请参阅
codegen
|coder.config
|coder.getArgTypes
|coder.runTest