主要内容

检测溢出

这个例子展示了如何检测使用的溢出MATLAB®编码器™应用。在转换过程中的数值测试阶段,你选择模拟定点代码使用了双打。然后应用报告表达式在生成的代码中产生溢出定点数据类型的值。

先决条件

这个例子需要以下产品:下载188bet金宝搏

创建一个新的文件夹,复制相关文件

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

    函数y =溢出(b, x,重置)如果输入参数个数< 3,重置= true;结束持续的z p如果isempty (z) | |重置p = 0;z = 0(大小(b));结束(y, z, p) = fir_filter (b, x, z, p);结束函数(y, z, p) = fir_filter (b, x, z, p) y = 0(大小(x));nx =长度(x);nb =长度(b);n = 1: nx p = p + 1;如果p > nb, p = 1;结束z (p) = x (n);acc = 0;k = p;j = 1: nb acc = acc + b (j) * z (k);k = k - 1;如果k < 1, k =注;结束结束y (n) = acc;结束结束
  2. 创建一个测试文件,overflow_test.m,锻炼溢出算法。你使用这个测试文件定义的输入类型b,x,重置,后来又来验证算法的定点版本。

    函数overflow_test%计算滤波器系数%使用FIR1函数%信号处理工具箱。0.25 b % = fir1(11日);b = (-0.004465461051254 - -0.004324228005260 + 0.012676739550326 + 0.074351188907780 + 0.172173206073645 + 0.249588554524763 + 0.249588554524763 + 0.172173206073645 + 0.074351188907780 + 0.012676739550326 -0.004324228005260 -0.004465461051254) ';%输入信号nx = 256;t = linspace(0, 10 *π,nx) ';%的冲动x_impulse = 0 (nx, 1);x_impulse (1) = 1;%最大增益%时,将发生的最大增益滤波器%的输入线滤波器的迹象%脉冲响应。x_max_gain = (b)的迹象;x_max_gain = repmat (x_max_gain装天花板(nx /长度(b)), 1);x_max_gain = x_max_gain (1: nx);%的正弦f0 = 0.1;f1 = 2;x_sines =罪(2 *π* t * f0) + 0.1 *罪(2 *π* t * f1);%唧唧声f_chirp = 1/16;%的目标频率x_chirp =罪(π* f_chirp * t ^ 2);%线性啁啾x = [x_impulse x_max_gain、x_sines x_chirp);标题= {“冲动”,“马克斯增益”,正弦的总和,“唧唧喳喳”};y = 0(大小(x));i = 1:尺寸(x, 2)重置= true;y (:, i) =溢出(b, x (:, i),重置);结束test_plot(1、标题、t, x, y)结束函数test_plot(图、标题、t, x, y₁)图(图)clf sub_plot = 1;font_size = 10;i = 1:尺寸(x, 2)次要情节(4 1 sub_plot) sub_plot = sub_plot + 1;情节(t) x(:,我)“c”、t、y₁(:,我)“k”)轴(“紧”)包含(“t”,“字形大小”,font_size);标题(标题{},“字形大小”,font_size);甘氨胆酸ax =;斧子。字形大小= 10;结束图(gcf)结束
类型 的名字 描述
函数代码 overflow.m MATLAB函数入口点
测试文件 overflow_test.m MATLAB脚本测试overflow.m

打开MATLAB编码器应用程序

  1. 导航到工作文件夹,其中包含文件对于这个示例。

  2. 在MATLAB将来发布应用程序选项卡,在代码生成,点击应用程序图标。

选择源文件

添加的入口点函数溢出项目,浏览该文件overflow.m,然后单击开放。默认情况下,应用程序保存信息和设置这个项目在当前文件夹的文件命名overflow.prj

使定点转换

  1. 数字转换转换为定点

  2. 点击下一个定义输入类型的一步。

    应用程序屏幕overflow.m违规的代码和代码生成准备问题。应用程序没有发现问题overflow.m

定义输入类型

  1. 定义输入类型页面,添加overflow_test作为一个测试文件,浏览到overflow_test.m,然后单击开放

  2. 点击Autodefine输入类型

    测试文件。应用程序决定了从测试文件的输入类型b双(1 x12),x双(256 x1),重置逻辑(1 x1)

  3. 点击下一个检查运行时问题的一步。

检查运行时问题

检查运行时问题一步生成测试的墨西哥人。它运行测试文件overflow_test更换要求溢出函数调用生成的墨西哥人。如果应用程序发现问题,它提供了警告和错误消息。您可以单击消息凸显了有问题的代码在一个窗格中,您可以编辑代码。

  1. 检查运行时问题页面,应用填充测试文件字段overflow_test,测试文件用于定义的输入类型。

  2. 点击检查问题

    应用程序没有检测问题。

  3. 点击下一个转换为定点的一步。

转换为定点

  1. 应用程序显示编译信息,类型,大小和复杂性——代码中的变量。有关更多信息,请参见查看和修改变量的信息

    函数替换标签的应用程序不支持显示功能定点转换。金宝app看到运行一个仿真

  2. 查看fimath设置,单击设置箭头。设置fimath产品模式和模式KeepLSB。这些设置模型C语言中的整数操作的行为。

  3. 点击分析

    测试文件,overflow_test,运行。这个应用程序显示模拟上的最小值和最大值范围变量选项卡。使用模拟数据范围,软件提出了定点类型为每个变量基于默认类型建议设置,并显示他们的建议类型列。

  4. 浮点算法转换为定点,点击转换

    软件验证该类型和生成一个定点版本的入口点函数。

    如果发生错误和警告在验证期间,应用程序显示他们输出选项卡。看到验证类型

测试数值运算和检查溢出

  1. 单击测试箭头。验证测试文件overflow_test.m。选择使用缩放双打检测溢出,然后单击测试

    应用程序运行测试文件用于定义输入类型测试定点MATLAB代码。因为你选择检测溢出,它也运行仿真使用了双版本的提议定点类型。在双精度浮点双打扩展存储数据,所以他们在全面执行算术。因为他们保持他们的定点设置,可以报告时计算出的定点类型的范围。

    模拟运行。应用程序检测到一个溢出。应用程序报告的溢出溢出选项卡。突出的表达式溢出,单击溢出。

  2. 决定是否和溢出的乘法。

    fimath设置,设置产品模式FullPrecision,然后再次重复转换和定点测试代码。

    溢出仍然发生,这表明它是在满溢的表达式。