这个例子展示了如何从双精度MATLAB生成单精度C代码®在命令行中编写代码。
要完成此示例,请安装以下产品:s manbetx 845
MATLAB
MATLAB编码器™
定点设计器™
C编译器
你可以用mex-设置
更改默认编译器。看见更改默认编译器.
例如,创建一个本地工作文件夹,c:\ex\u 2ndOrder\u过滤器
.
改变到docroot\toolbox\fixpoint\examples
文件夹。在MATLAB命令行,输入:
cd(完整文件(docroot、“工具箱”、“定点”、“示例”))
抄袭ex_2ndOrder_filter.m
和ex_2ndorder_filter_test.m.
将文件保存到本地工作文件夹。
类型 | 名称 | 描述 |
---|---|---|
功能代码 | ex_2ndOrder_filter.m |
入口点MATLAB函数 |
测试文件 | ex_2ndorder_filter_test.m. |
MATLAB脚本,用于测试 |
确定输入参数的类型x
, 采用coder.getArgTypes
运行测试文件ex_2ndorder_filter_test.m.
types=coder.getArgTypes(“ex_2ndOrder_过滤器测试”,“ex_2ndOrder_过滤器”);
测试文件运行并显示每个输入信号的过滤器的输出。coder.getArgTypes
确定x
是1x256双倍的。
在生成单精度C代码之前,生成一个精密MEX功能,可用于验证生成的单精度代码的行为。要指示您希望单精度MEX代码,请使用-singleC
选项。
编码基因-singleCex_2ndOrder_滤波器-args类型-报告
在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_滤波器
函数,并调用单个精度ex_2ndOrder_过滤器
功能。
编码器.RULEST(“ex_2ndOrder_过滤器测试”,“ex_2ndOrder_过滤器”)
测试文件运行并显示每个输入信号的滤波器输出。单精度MEX函数产生的结果与双精度MATLAB函数相同。
创建用于生成C静态库,动态库或可执行文件的代码配置对象。
cfg=coder.config(“lib”);
要生成单精度C代码,请调用编码基因
与之-singleC
选项启用代码生成报告的生成。
编码基因-配置cfg-singleCex_2ndOrder_滤波器-args{types{1}}-报告
要查看C代码生成的代码生成报告,请单击查看报告链接
在里面生成代码窗格中,单击ex_2ndOrder_filter.c
.
双精度变量的类型为漂浮
在C代码中。
索引我
是一个整数。
生成单精度代码时,编码基因
启用代码生成报告中的潜在数据类型问题突出显示。如果编码基因
无法删除双精度运算,报告将突出显示导致该运算的MATLAB表达式。
点击代码洞察标签。扩大潜在的数据类型问题. 如果没有双精度操作,则表示不存在双精度操作。
编码基因
|coder.config
|coder.getArgTypes
|编码器运行测试