主要内容

生成单精度MATLAB代码

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

先决条件

完成这个示例中,安装以下产品:下载188bet金宝搏

创建一个文件夹,复制有关文件

  1. 在当地,可写的文件夹中,创建一个函数ex_2ndOrder_filter.m

    函数y = ex_2ndOrder_filter (x)% # codegen持续的z如果isempty (z) z = 0 (2, 1);结束% [b] =黄油(0.25 2,)b = (0.0976310729378175, 0.195262145875635, 0.0976310729378175);一个= (1、-0.942809041582063、0.3333333333333333);y = 0(大小(x));i = 1:长度b (x) y (i) = (1) * x(我)+ z (1);b z (1) = (2) * x(我)+ z (2) - (2) * y(我);z (2) = b (3) * x (i) - (3) * y(我);结束结束
  2. 创建一个测试文件,ex_2ndOrder_filter_test.m,锻炼ex_2ndOrder_filter算法。

    这是一个最佳实践来创建一个单独的测试脚本预处理和后处理,如:

    • 设置输入值。

    • 调用函数测试下。

    • 输出测试结果。

    覆盖整个操作系统的范围,测试脚本运行ex_2ndOrder_filter函数有三个输入信号:唧唧声,一步,冲动。然后脚本块的输出。

    % ex_2ndOrder_filter_test%%定义代表输入N = 256;%的数量分t = linspace (0, 1, N);%时间向量从0到1秒f1 = N / 2;%的目标频率啁啾尼奎斯特x_chirp =罪(π* f1 * t ^ 2);%线性啁啾从0到f / 2赫兹在1秒x_step = 1 (1, N);%的步骤x_impulse = 0 (1, N);%的冲动x_impulse (1) = 1;%运行被测试函数x = [x_chirp; x_step x_impulse];y = 0(大小(x));i = 1:尺寸(x, 1) y(我:)= ex_2ndOrder_filter (x(我,:));结束%绘制结果标题= {“唧唧喳喳”,“步骤”,“冲动”}clfi = 1:尺寸(x, 1)次要情节(大小(x, 1), 1, i)情节(t) x(我:),t、y(我,:))标题(标题{我})传说(“输入”,“输出”)结束包含(“时间(s)”图(gcf) disp ()测试完成。)
类型 的名字 描述
函数代码 ex_2ndOrder_filter.m MATLAB函数入口点
测试文件 ex_2ndOrder_filter_test.m

MATLAB脚本测试ex_2ndOrder_filter.m

设置单精确配置对象

创建一个单精度配置对象。指定测试文件名称。验证单精度的代码使用测试文件。情节双精度之间的错误代码和代码单精度。使用其他属性的默认值。

scfg = coder.config (“单一”);scfg。TestBenchName =“ex_2ndOrder_filter_test”;scfg。TestNumerics = true;scfg。LogIOForComparisonPlotting = true;

生成单精度MATLAB代码

将双精度MATLAB函数,ex_2ndOrder_filter,单精度MATLAB代码,可以使用convertToSingle

convertToSingle配置scfgex_2ndOrder_filter

convertToSingle分析了双精度的代码。通过运行测试文件转换过程推断类型,因为你没有指定的输入类型ex_2ndOrder_filter函数。转换过程选择单精度类型为双精度变量。它选择int32对索引变量。转换完成后,convertToSingle生成一个类型的建议报告。

视图类型建议报告

看到类型转换过程为变量,选择打开类型建议报告ex_2ndOrder_filter函数。点击链接ex_2ndOrder_filter_report.html

报告在web浏览器中打开。转换过程的转换:

  • 双精度变量

  • 该指数int32。转换过程指标和维度变量int32

视图生成单精度MATLAB代码

查看报告的生成单精度MATLAB代码、在命令窗口:

  1. 滚动到生成单精度的代码的一步。单击查看报告链接。

  2. MATLAB源窗格中,单击ex_2ndOrder_filter_single

代码生成的报告显示的单精度MATLAB代码ex_2ndOrder_filter

查看潜在的数据类型问题

当你产生单精度代码、convertTosingle使强调潜在的数据类型问题的代码生成报告。如果convertTosingle不能删除一个双精度运算,这份报告强调了MATLAB表达式结果的操作。单击代码的见解选项卡。没有潜在的数据类型问题表明,没有双精度操作仍然存在。

比较单精度和双精度变量

你可以看到输入的比较图x和输出y因为你选择日志输入和输出比较的阴谋。

另请参阅

||

相关的话题