在命令行中生成单精度C代码
此示例显示了如何从双精度MATLAB生成单精度C代码®命令行的代码。
先决条件
要完成此示例,请安装以下产品:下载188bet金宝搏
MATLAB
MATLAB CODER™
定点Designer™
C编译器
您可以使用
mex -setup
更改默认编译器。看更改默认编译器。
创建一个文件夹并复制相关文件
创建一个本地工作文件夹,例如
C:\ ex_2ndorder_filter
。更改为
DocRoot \ Toolbox \ fixpoint \示例
文件夹。在MATLAB命令行,输入:CD(FullFile(DocRoot,“工具箱”,“ FixPoint”,“示例”))
复制
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
, 利用编码器。getArgTypes
运行测试文件EX_2NDORDER_FILTER_TEST.M
types = coder.getArgtypes('ex_2ndorder_filter_test',,,,'ex_2ndorder_filter');
测试文件运行并显示每个输入信号的过滤器的输出。编码器。getArgTypes
确定输入类型的X
是1x256双。
生成并运行单精制MEX以验证数值行为
在生成单精度C代码之前,请生成单精度MEX函数,您可以用来验证生成的单精制代码的行为。要指示您想要单精制MEX代码,请使用
-singlec
选项。代码根-singlecEX_2NDORDER_FILTER-args类型-报告
在MEX生成期间,代码生成器检测单位转换问题。在生成C/C ++代码之前,请解决这些问题。此示例没有单一精确的转换问题。
生成的MEX接受单精度和双精度输入。您可以使用相同的测试文件运行双精度MATLAB功能和单精度MEX功能。您无需修改测试文件即可调用单精度MEX函数。
运行测试文件
EX_2NDORDER_FILTER_TEST.M
。该文件调用Double Eccision 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 = coder.config('lib');
要生成单精度C代码,请致电
代码根
与-singlec
选项。启用代码生成报告的生成。代码根-configCFG-singlecEX_2NDORDER_FILTER-args{类型{1}}-报告
查看生成的单精度C代码
要查看C代码生成的代码生成报告,请单击查看报告关联。
在里面生成的代码窗格,单击EX_2NDORDER_FILTER.C
。
双精度变量具有类型
漂浮
在C代码中。索引
一世
是一个整数。
查看潜在的数据类型问题
当您生成单精制代码时,代码根
在代码生成报告中突出显示潜在数据类型问题。如果代码根
该报告无法删除双重精确操作,突出显示了导致操作的MATLAB表达式。
点击代码见解标签。扩张潜在数据类型问题。缺乏双重精确操作表明不保留双重精确操作。
也可以看看
代码根
|coder.config
|编码器。getArgTypes
|coder.runtest