数的定标
- 格式:doc
- 大小:158.00 KB
- 文档页数:17
三种常用数据标准化方法
1. Min-Max 标准化方法
将数据集中的每一项数据,使用公式(X-Xmin)/(Xmax-Xmin)进行标准化。
其中,X为原数据集合中的一条数据,Xmax和Xmin分别为原数据集合的最大值和最小值。
2. Z-Score 标准化方法
该方法将原始数据集合中的每个数据项转化为一个新值,这个新值代表原始数据集合中该数据项与其他数据项的相对位置。
使用公式(X-μ)/σ进行标准化。
其中,μ为原始数据集合的平均数,σ为原始数据集合的标准差。
3. 小数定标标准化方法
该方法通过移动小数点的位置,将原始数据集合中的每个数据项转化为一个新值,使得该新值都在[-1,1]之间。
使用公式X/10^n进行标准化。
其中,n为一个大的整数,用于控制移动多少位小数点,使得数据集中的所有数据项都落入[-1,1]之间。
基于Simulink模型的数据定标问题研究数据定标是指通过移位、缩放、线性变换等数学方法,将原始数据映射到新的取值范围内的过程。
在科学与工程领域中,数据定标是非常重要的环节,它能够帮助研究人员更好地理解数据,从而更准确地进行分析、建模和预测等工作。
本文将基于Simulink模型,对数据定标问题进行研究和分析。
Simulink是一种基于图形化编程语言的数学建模和仿真工具,在工程领域中广泛应用于控制系统、信号处理、图像处理等方面。
对于数据定标问题而言,Simulink可以提供直观的图形界面,使得用户能够快速有效地构建定标模型,并进行仿真验证。
在本文中,我们以一个具体的例子来说明Simulink模型下的数据定标问题。
假设我们有一组温度传感器数据,其数值范围在-40℃到100℃之间,为了更好地展示这些数据,我们需要将其映射到0到255之间的整数值范围内。
在Simulink模型中,我们可以采取以下步骤来构建定标模型:1. 选择数据和定标范围选取所需定标的数据和新的取值范围区间。
对于本例,我们选择传感器数据和0到255的整数值范围。
2. 缩放和平移数据对原始数据进行缩放和平移处理,并将其映射到新的取值范围内。
在Simulink模型中,我们可以使用“Gain”模块来进行缩放处理,使用“Add”模块来进行平移处理。
具体而言,这里我们可以将原始数据加上40℃,然后将结果乘以255/(100+40),即可完成缩放和平移处理。
3. 取整输出将缩放和平移后的数据取整,得到最终的定标数据。
在Simulink模型中,我们可以使用“Round”模块来进行取整处理。
以上三个步骤即是Simulink模型下的数据定标过程。
通过构建定标模型,我们可以将原始数据准确而有效地映射到新的取值范围内,从而提高其可读性和可理解性,并且方便后续数据分析和应用。
总之,在科学与工程领域中,数据定标是至关重要的一环。
通过Simulink模型,我们可以更快捷、更直观地进行数据定标处理,并为后续的数据分析和建模工作提供更有力的支持。
第3章 DSP 芯片的定点运算3.1 数 的 定 标在定点DSP 芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。
一个整型数的最大表示范围取决于DSP 芯片所给定的字长,一般为16位或24位。
显然,字长越长,所能表示的数的范围越大,精度也越高。
如无特别说明,本书均以16位字长为例。
DSP 芯片的数以2的补码形式表示。
每个16位数用一个符号位来表示数的正负,0表示数值为正,1则表示数值为负。
其余15位表示数值的大小。
因此二进制数0010000000000011b =8195 二进制数1111111111111100b =-4对DSP 芯片而言,参与数值运算的数就是16位的整型数。
但在许多情况下,数学运算过程中的数不一定都是整数。
那么,DSP 芯片是如何处理小数的呢?应该说,DSP 芯片本身无能为力。
那么是不是说DSP 芯片就不能处理各种小数呢?当然不是。
这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。
这就是数的定标。
通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。
数的定标有Q 表示法和S 表示法两种。
表3.1列出了一个16位数的16种Q 表示、S 表示及它们所能表示的十进制数值范围。
从表3.1可以看出,同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。
例如:16进制数2000H =8192,用Q0表示 16进制数2000H =0.25,用Q15表示但对于DSP 芯片来说,处理方法是完全相同的。
从表3.1还可以看出,不同的Q 所表示的数不仅范围不同,而且精度也不相同。
Q 越大,数值范围越小,但精度越高;相反,Q 越小,数值范围越大,但精度就越低。
例如,Q0的数值范围是-32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为 1/32768 = 0.00003051。
因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地减小。
1.基本概念(1)计算机中定点数的三种表示方法:原码、补码和反码(2)在DSP中一般使用补码的形式来表示操作数(3)整型数的表示范围由DSP芯片的字长决定,比如16位或24位(4)注意,符号位的bit个数,不同的DSP芯片有不同的实现2.DSP如何处理小数以16位的字长DSP芯片为例子。
(1)定标由程序员规定,小数点位于16位中的哪一位,通过设定小数点的不同位置,就可以表示不同大小和不同精度的小数。
参与运算的是16位的整型数,并不存在真正意义上的小数点。
(2)定标的表示方法Q表示法:Q后面的数表示该数的小数点右边有几位S表示法:表示小数点前后两部分各占了几位数Q/S表示法能表示十进制数值的精度和范围:同一个16bit数,Q值不同,则表示的数也不同。
在此处键入公式。
例:2000HQ0:意思是小数点部分没有,那就是2000H=8192Q15:小数点部分占了15位,总共才16位,最高位是符号位,所以意思就是整数部分占了0位,即不存在整数部分【数的格式就是0.xxxx】,值就是2000H=0.125所以:同样一个16位的数,Q值不同,所能表示的数也不同,所能表示的数的范围和精度也不同,Q值越大,所能表述的数的范围就越小[对整数部分而言],但是精度越高【对小数部分而言】,反之,Q越小,能表示的数值越大,但是精度越低。
故对于DSP处理定点数来说,数值的表示范围和精度是一堆矛盾体。
3.小数和定点数和转换规则在实际处理中,大都处理浮点数,但是浮点数太消耗时间。
因此在DSP处理中,首先进行数值的转换,DSP芯片计算整型数会快很多。
小数F转定点整数A:A=Fx2Q定点整数A转小数F:F=Ax2−Q例:F=0.6,定标Q=15,对应的定点整数就是:0.6 x 215=0.6 x 32768=19660.8最终要得到一个整数,所以这里还有另一个规则,就是“向下取整”,那最终的结果就是19660。
A=19660,定标Q=15,对应的小数就是:19660 x 2−15=0.5997,可以发现转回去的值和0.6是有差异的。
dsp数的定标名词解释DSP是数字信号处理(Digital Signal Processing)的缩写,是指利用数字技术对信号进行处理的一种方式。
数字信号处理是现代通信技术、音频处理、图像处理、雷达信号处理等众多领域中的关键技术之一,被广泛应用于各个领域。
DSP数的定标是指对数字信号进行精度补偿、峰值标定和校准,以确保测量结果的准确性和可靠性。
定标是指在已知标准参考信号下对DSP系统进行校正,使得系统能够正确地量化输入信号并进行相应的数字处理。
在DSP系统中,数的定标是非常重要且必要的一步。
它旨在确保DSP系统在各种环境和条件下的性能稳定和可靠性。
数的定标涉及到几个关键的步骤,下面将对这些步骤进行详细解释。
首先,数的定标需要确定DSP系统的量化精度。
量化精度是指系统可以采样和量化的最小输入变化。
通过在已知输入信号下对系统进行测试,可以确定系统可以准确测量的最小变化值。
这个步骤通常涉及选择适当的参考信号源,并在不同的输入水平下进行测试。
根据测试结果,可以确定系统的量化精度。
接下来,数的定标还需要考虑系统的峰值标定。
峰值标定是指确定DSP系统可以正确定量的最大输入信号。
这对于在系统使用过程中能够正确处理高幅度信号至关重要。
峰值标定可以通过将已知幅度的信号输入到系统中,并观察系统是否能够准确测量这些信号的幅度来实现。
通过对系统进行多个不同幅度的测试,可以确定系统的峰值标定值。
此外,校准也是数的定标的重要一环。
校准是指对DSP系统进行调整和校正,以确保其输出的准确性和稳定性。
校准通常涉及对系统的各个部分进行测试,并根据测试结果进行相应的调整。
校准可以包括对时钟源的校准、模数转换器的校准以及滤波器的校准等。
数的定标还需要考虑信号的线性性。
线性性是指系统对输入信号的响应与输入信号幅度成正比。
在进行数的定标时,需要检查系统的线性性,并在必要时进行校正。
这可以通过对多个不同幅度的输入信号进行测试来实现。
最后,数的定标也需要考虑对系统进行环境测试。
IQmath库的定点DSP算法设计引言DSP数字信号处理器DSP数字信号处理器是一个实时处理信号的微处理器,分为定点和浮点两种基本类型,它们之间最大差异在于浮点DSP比定点DSP具有更强大的计算能力和更大范围的动态精度。
浮点DSP内部设有专门支持浮点运算的硬件单元,对浮点格式的数据可以直接通过代码加入硬件运算中,因此运算速度很高。
而定点DSP没有定点运算单元,它对浮点格式的实数必须通过软件才能实现,这样就增加了指令代码,间接地使得定点DSP运算速度低于浮点DSP,典型的浮点处理器,如TI公司的C6000系列,几乎所有的嵌入式微控制器都为定点处理器,如TI公司的C2000系列。
因为浮点DSP的价格更加昂贵,因此定点DSP仍然有其巨大的优势。
但是任何算法都需要进行浮点运算,因此如何提高在定点DSP 上进行的浮点运算的速度和精度,就成为了用户开发时必须要考虑的关键问题。
TI公司专门为定点处理器TMS320C2000系列提供的IQmath库为解决上述问题提供了良好的实现方法。
数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。
数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
1 数的定标:Q格式有符号数的表示法,机器数(出现在电脑的二进位数值)有3个特点,无符号或符号转换成数值来表示,没有+10101这样的资料,而是以010101来表示,只表示单纯的整数或小数,小数点的位置预设在一定的位置而较少变动,它的长度受到电脑硬体的限制,而不能无限增长。
Q格式,就是将一个小数放大若干倍后,用整数来表示小数定点DSP不能直接处理小数,编程时处理小数有3种方法:①把变量定义成float类型。
在定点的DSP或处理器中,实现一个浮点数的运算时一个非常复杂的事情,尤其是非四则运算的函数运算,例如三角函数运算,sin,cos,tan,又比如指数运算,exp,非整数的幂运算等等。
用机器来实现这样复杂的运算,会花费很多的计算指令周期。
在某些程度下,用定点整数去代替浮点运算,会很大程度的节省运算时间,是应用程序达到实时运算的效果。
一DSP定点算数运算1数的定标在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。
一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。
显然,字长越长,所能表示的数的范围越大,精度也越高。
如无特别说明,本书均以16位字长为例。
DSP芯片的数以2的补码形式表示。
每个16位数用一个符号位来表示数的正负,0表示数值为正, l则表示数值为负。
其余15位表示数值的大小。
因此,二进制数0010000000000011b=8195二进制数1111111111111100b=-4对DSP芯片而言,参与数值运算的数就是16位的整型数。
但在许多情况下,数学运算过程中的数不一定都是整数。
那么,DSP芯片是如何处理小数的呢?应该说,DSP芯片本身无能为力。
那么是不是说DSP芯片就不能处理各种小数呢?当然不是。
这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。
这就是数的定标。
通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。
数的定标有Q表示法和S表示法两种。
表1.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。
从表1.1可以看出,同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。
例如,16进制数2000H=8192,用Q0表示16进制数2000H=0.25,用Q15表示但对于DSP芯片来说,处理方法是完全相同的。
从表1.1还可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。
数的定标在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。
一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。
显然,字长越长,所能表示的数的范围越大,精度也越高。
如无特别说明,本书均以16位字长为例。
DSP芯片的数以2的补码形式表示。
每个16位数用一个符号位来表示数的正负,0表示数值为正,1则表示数值为负。
其余15位表示数值的大小。
因此二进制数0010000000000011b=8195二进制数1111111111111100b=-4对DSP芯片而言,参与数值运算的数就是16位的整型数。
但在许多情况下,数学运算过程中的数不一定都是整数。
那么,DSP芯片是如何处理小数的呢?应该说,DSP芯片本身无能为力。
那么是不是说DSP芯片就不能处理各种小数呢?当然不是。
这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。
这就是数的定标。
通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。
数的定标有Q表示法和S表示法两种。
表3.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。
从表3.1可以看出,同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。
例如:16进制数2000H=8192,用Q0表示16进制数2000H=0.25,用Q15表示但对于DSP芯片来说,处理方法是完全相同的。
从表3.1还可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。
Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。
例如,Q0的数值范围是-32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为1/32768= 0.00003051。
因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地减小。
在实际的定点算法中,为了达到最佳的性能,必须充分考虑到这一点。
浮点数与定点数的转换关系可表示为:浮点数(x)转换为定点数(< xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:off ice" />):定点数( )转换为浮点数(x):例如,浮点数 x=0.5,定标 Q=15,则定点数=,式中表示下取整。
反之,一个用Q=15表示的定点数16384,其浮点数为16384×2-15=16384/32768=0.5。
表3.1 Q表示、S表示及数值范围float pi=3.14159;float hamwindow[256];for(i=0;i<256;i++) hamwindow[i]=0.54-0.46*cos(2.0*pi*i/255);如果要将上述程序用某种定点DSP芯片来实现,则需将上述程序改写为DSP芯片的汇编语言程序。
为了DSP程序调试的方便及模拟定点DSP实现时的算法性能,在编写DSP汇编程序之前一般需将高级语言浮点算法改写为高级语言定点算法。
下面讨论基本算术运算的定点实现方法。
< xmlnamespace prefix ="st1" ns="urn:schemas-microsoft-com:office:smarttags" />3.2.1 加法/减法运算的C语言定点模拟设浮点加法运算的表达式为:float x,y,z;z=x+y;将浮点加法/减法转化为定点加法/减法时最重要的一点就是必须保证两个操作数的定标值一样。
若两者不一样,则在做加法/减法运算前先进行小数点的调整。
为保证运算精度,需使Q值小的数调整为与另一个数的Q值一样大。
此外,在做加法/减法运算时,必须注意结果可能会超过16位表示。
如果加法/减法的结果超出16位的表示范围,则必须保留32位结果,以保证运算的精度。
1.结果不超过16位表示范围设x的Q值为Qx,y的Q值为Qy,且Qx>Qy,加法/减法结果z的定标值为Qz,则z=x+y ⇒== ⇒所以定点加法可以描述为:int x,y,z;long temp;temp=y<<(Qx-Qy);temp=x+temp;z=(int)(temp>>(Qx-Qz)), 若Qx≥Qzz=(int)(temp<<(Qz-Qx)), 若QxQ≤z例3.2定点加法设x=0.5,y=3.1,则浮点运算结果为z=x+y=0.5+3.1=3.6;Qx=15,Qy=13,Qz=13,则定点加法为:x=16384;y=25395;temp=25395<<2=101580;temp=x+temp=16384+101580=117964;z=(int)(117964L>>2)=29491;因为z的Q值为13,所以定点值z=29491即为浮点值z=29491/8192=3.6。
例3.3定点减法设x=3.0,y=3.1,则浮点运算结果为z=x-y=3.0-3.1=-0.1;Qx=13,Qy=13,Qz=15,则定点减法为:x=24576;y=25295;temp=25395;temp=x-temp=24576-25395=-819;因为Qx<Qz,故 z=(int)(-819<<2)=-3276。
由于z的Q值为15,所以定点值z=-3276即为浮点值z=-3276/32768≈-0.1。
2.结果超过16位表示范围设x的Q值为Qx,y的Q值为Qy,且Qx>Qy,加法结果z的定标值为Qz,则定点加法为:int x,y;long temp,z;temp=y<<(Qx-Qy);temp=x+temp;z=temp>>(Qx-Qz),若Qx≥Qzz=temp<<(Qz-Qx),若Qx≤Qz例3.4结果超过16位的定点加法设x=15000,y=20000,则浮点运算值为z=x+y=35000,显然z>32767,因此Qx=1,Qy=0,Qz=0,则定点加法为:x=30000;y=20000;temp=20000<<1=40000;temp=temp+x=40000+30000=70000;z=70000L>>1=35000;因为z的Q值为0,所以定点值z=35000就是浮点值,这里z是一个长整型数。
当加法或加法的结果超过16位表示范围时,如果程序员事先能够了解到这种情况,并且需要保证运算精度时,则必须保持32位结果。
如果程序中是按照16位数进行运算的,则超过16位实际上就是出现了溢出。
如果不采取适当的措施,则数据溢出会导致运算精度的严重恶化。
一般的定点DSP芯片都设有溢出保护功能,当溢出保护功能有效时,一旦出现溢出,则累加器ACC的结果为最大的饱和值(上溢为7FFFH,下溢为8001H),从而达到防止溢出引起精度严重恶化的目的。
3.2.2 乘法运算的C语言定点模拟设浮点乘法运算的表达式为:float x,y,z;z = xy;假设经过统计后x的定标值为Qx,y的定标值为Qy,乘积z的定标值为Qz,则z = xy ⇒= ⇒=所以定点表示的乘法为:int x,y,z;long temp;temp = (long)x;z = (temp×y) >> (Qx+Qy-Qz);例3.5定点乘法设x = 18.4,y = 36.8,则浮点运算值为z =18.4×36.8 = 677.12;根据上节,得Qx = 10,Qy = 9,Qz = 5,所以x = 18841;y = 18841;temp = 18841L;z = (18841L*18841)>>(10+9-5) = 354983281L>>14 = 21666;因为z的定标值为5,故定点 z = 21666即为浮点的 z = 21666/32 = 677.08。
3.2.3 除法运算的C语言定点模拟设浮点除法运算的表达式为:float x,y,z;z = x/y;假设经过统计后被除数x的定标值为Qx,除数y的定标值为Qy,商z的定标值为Qz,则z = x/y ⇒= ⇒所以定点表示的除法为:int x,y,z;long temp;temp = (long)x;z = (temp<<(Qz-Qx+Qy))/y;例3.6定点除法设x = 18.4,y = 36.8,浮点运算值为z = x/y = 18.4/36.8 = 0.5;根据上节,得Qx = 10,Qy = 9,Qz = 15;所以有x = 18841, y = 18841;temp = (long)18841;z = (18841L<<(15-10+9))/18841 = 308690944L/18841 = 16384;因为商z的定标值为15,所以定点z = 16384即为浮点 z = 16384/215= 0.5。
3.2.4 程序变量的Q值确定在前面几节介绍的例子中,由于x、y、z的值都是已知的,因此从浮点变为定点时Q值很好确定。
在实际的DSP应用中,程序中参与运算的都是变量,那么如何确定浮点程序中变量的Q值呢?从前面的分析可以知道,确定变量的Q值实际上就是确定变量的动态范围,动态范围确定了,则Q值也就确定了。
设变量的绝对值的最大值为,注意必须小于或等于32767。
取一个整数n,使它满足则有Q = 15-n例如,某变量的值在-1至+1之间,即 <1,因此n = 0,Q=15-n = 15。
确定了变量的就可以确定其Q值,那么变量的又是如何确定的呢?一般来说,确定变量的有两种方法:一种是理论分析法,另一种是统计分析法。
1.理论分析法有些变量的动态范围通过理论分析是可以确定的。
例如:(1) 三角函数,y = sin(x)或y = cos(x),由三角函数知识可知,|y|≤1;(2) 汉明窗,y(n) = 0.54-0.46cos [2πn/(N-1)] ,0≤n≤N-1。
因为-1≤cos [2πn/(N-1)]≤1,所以0.08≤y(n)≤1.0;(3) FIR卷积。
y(n)= ,设,且x(n)是模拟信号12位量化值,即有≤211,则≤211;(4) 理论已经证明,在自相关线性预测编码(LPC)的程序设计中,反射系数满足下列不等式:,i= 1,2,…,p, p为LPC的阶数。