主要内容

在命令行生成单精度C代码

这个例子展示了如何从双精度MATLAB生成单精度C代码®在命令行中编写代码。

先决条件

要完成此示例,请安装以下产品:s manbetx 845

创建文件夹并复制相关文件

  1. 例如,创建一个本地工作文件夹,c:\ex\u 2ndOrder\u过滤器.

  2. 改变到docroot\toolbox\fixpoint\examples文件夹。在MATLAB命令行,输入:

    cd(完整文件(docroot、“工具箱”、“定点”、“示例”))

  3. 抄袭ex_2ndOrder_filter.mex_2ndorder_filter_test.m.将文件保存到本地工作文件夹。

    类型 名称 描述
    功能代码 ex_2ndOrder_filter.m 入口点MATLAB函数
    测试文件 ex_2ndorder_filter_test.m.

    MATLAB脚本,用于测试ex_2ndOrder_filter.m

    ex_2ndOrder_滤波函数

    ex_2ndOrder_filter_测试脚本

确定输入参数的类型

确定输入参数的类型x, 采用coder.getArgTypes运行测试文件ex_2ndorder_filter_test.m.

types=coder.getArgTypes(“ex_2ndOrder_过滤器测试”,“ex_2ndOrder_过滤器”);

测试文件运行并显示每个输入信号的过滤器的输出。coder.getArgTypes确定x是1x256双倍的。

生成并运行单精度MEX以验证数值行为

  1. 在生成单精度C代码之前,生成一个精密MEX功能,可用于验证生成的单精度代码的行为。要指示您希望单精度MEX代码,请使用-singleC选项。

    编码基因-singleCex_2ndOrder_滤波器-args类型-报告

    在MEX生成期间,代码生成器检测单精度转换问题。在生成C / C ++代码之前,请解决这些问题。此示例没有单精度转换问题。

    生成的MEX接受单精度和双精度输入。您可以使用相同的测试文件来运行双重精度MATLAB功能和单精度MEX功能。您不必修改测试文件以调用单精度MEX功能。

  2. 运行测试文件ex_2ndorder_filter_test.m.. 此文件调用双精度MATLAB函数ex_2ndOrder_filter.m.

    ex_2ndorder_filter_test.

  3. 测试文件运行并显示每个输入信号的过滤器的输出。

  4. 运行测试文件ex_2ndorder_filter_test.,替换对双精度的调用ex_2ndOrder_滤波器函数,并调用单个精度ex_2ndOrder_过滤器功能。

    编码器.RULEST(“ex_2ndOrder_过滤器测试”,“ex_2ndOrder_过滤器”)
  5. 测试文件运行并显示每个输入信号的滤波器输出。单精度MEX函数产生的结果与双精度MATLAB函数相同。

生成单精度C代码

  1. 创建用于生成C静态库,动态库或可执行文件的代码配置对象。

    cfg=coder.config(“lib”);

  2. 要生成单精度C代码,请调用编码基因与之-singleC选项启用代码生成报告的生成。

    编码基因-配置cfg-singleCex_2ndOrder_滤波器-args{types{1}}-报告

查看生成的单精度C代码

要查看C代码生成的代码生成报告,请单击查看报告链接

在里面生成代码窗格中,单击ex_2ndOrder_filter.c.

  • 双精度变量的类型为漂浮在C代码中。

  • 索引是一个整数。

查看潜在的数据类型问题

生成单精度代码时,编码基因启用代码生成报告中的潜在数据类型问题突出显示。如果编码基因无法删除双精度运算,报告将突出显示导致该运算的MATLAB表达式。

点击代码洞察标签。扩大潜在的数据类型问题. 如果没有双精度操作,则表示不存在双精度操作。

另见

|||

相关实例

更多关于