主要内容

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

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

先决条件

要完成此示例,请安装以下产品:2022世界杯八强谁会赢?

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

  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 . getargetypes (“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表达式。

单击代码的见解选项卡。扩大潜在的数据类型问题.没有双精度运算表示没有双精度运算。

另请参阅

|||

相关的例子

更多关于

Baidu
map