主要内容

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

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

先决条件

要完成此示例,请安装以下产品:下载188bet金宝搏

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

  1. 创建一个本地工作文件夹,例如:c: \ ex_2ndOrder_filter

  2. 改为docroot \工具箱\ fixpoint \例子文件夹中。在MATLAB命令行输入:

    Cd (fullfile(docroot, 'toolbox', 'fixpoint', 'examples'))

  3. 复制ex_2ndOrder_filter.m而且ex_2ndOrder_filter_test.m文件到您的本地工作文件夹。

    类型 的名字 描述
    函数代码 ex_2ndOrder_filter.m MATLAB入口函数
    测试文件 ex_2ndOrder_filter_test.m

    测试的MATLAB脚本ex_2ndOrder_filter.m

    ex_2ndOrder_filter函数

    ex_2ndOrder_filter_test脚本

确定输入参数的类型

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

types = code . getargtypes (“ex_2ndOrder_filter_test”“ex_2ndOrder_filter”);

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

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

  1. 在生成单精度C代码之前,生成一个可用于验证所生成的单精度代码行为的单精度MEX函数。要表示需要单精度MEX代码,请使用-singleC选择。

    codegen-singleCex_2ndOrder_filterarg游戏类型报告

    在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_filter函数调用单精度ex_2ndOrder_filter_mex函数。

    coder.runTest (“ex_2ndOrder_filter_test”“ex_2ndOrder_filter”
  5. 测试文件运行并显示每个输入信号的过滤器输出。单精度MEX函数产生的结果与双精度MATLAB函数相同。

生成单精度C代码

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

    CFG = code .config(“自由”);

  2. 要生成单精度C代码,调用codegen-singleC选择。启用代码生成报告的生成。

    codegen配置cfg-singleCex_2ndOrder_filterarg游戏{类型{1}}报告

查看已生成的单精度C代码

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

生成的代码窗格中,单击ex_2ndOrder_filter.c

  • 双精度变量有类型浮动在C代码中。

  • 该指数整数形式。

查看潜在的数据类型问题

当你生成单精度代码时,codegen允许在代码生成报告中突出显示潜在的数据类型问题。如果codegen不能删除双精度操作,报告强调了导致该操作的MATLAB表达式。

单击代码的见解选项卡。扩大潜在的数据类型问题。没有双精度操作表明没有双精度操作。

另请参阅

|||

相关的例子

更多关于