DSP实验报告重叠保留法和重叠相加法(精)
- 格式:doc
- 大小:302.50 KB
- 文档页数:13
实验二 时域采样与频域采样1. 实验目的:(1) 掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息。
(2) 掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。
(3) 会用MATLAB 语言进行时域抽样与信号重建的方法,以及频域抽样与恢复时程序的编写方法。
2. 实验原理:了解时域采样定理的要点,理解理想采样信号)(ˆt xa 和模拟信号)(t x a 之间的关系,了解频域采样定理的要点,掌握这两个采样理论的结论:“时域采样频谱周期延拓,频域采样时域信号周期延拓”。
3. 实验内容:(1)时域采样理论的验证。
给定模拟信号,)()sin()(0t u t Ae t x t a Ω=-α式中A=444.128,α=502π,0Ω=502πrad/s(2)用DFT(FFT)求该模拟信号的幅频特性,选取三种采样频率,以验证时域采样理论。
(3)编写实验程序,计算)(1n x 、)(2n x 和)(3n x 的幅度特性,并绘图显示。
观察分析频谱混叠失真。
(4)频域采样理论的验证。
给定信号如下:⎪⎩⎪⎨⎧≤≤-≤≤+=其它02614271301)(n n n n n x(5)编写程序分别对频谱函数()FT[()]j X e x n ω=在区间]2,0[π上等间隔采样32和16点,得到)()(1632k X k X 和,再分别对)()(1632k X k X 和进行32点和16点IFFT ,得到)()(1632n x n x 和。
(6)分别画出()j X e ω、)()(1632k X k X 和的幅度谱,并绘图显示x(n)、)()(1632n x n x 和的波形,进行对比和分析,验证总结频域采样理论。
4. 思考题:如果序列x(n)的长度为M ,希望得到其频谱()j X e ω在]2,0[π上的N 点等间隔采样,当N<M 时, 如何用一次最少点数的DFT 得到该频谱采样?答:将长序列分段分段计算,这种分段处理方法有重叠相加法和重叠保留法两种。
重叠相加法重叠保留法点数与序列的关系重叠相加法和重叠保留法是在数值计算中常用的两种方法,用于计算序列或信号的运算结果。
1. 重叠相加法(Overlap-Add Method):
重叠相加法主要用于将长序列分解为多个较短的子序列进行处理。
具体步骤如下:
a. 将长序列划分为多个重叠的子序列,通常称为帧(Frame),帧之间有一定的重叠区域。
b. 对每个帧进行一定的处理(例如滤波、变换等)得到相应的子序列结果。
c. 将所有子序列结果进行重叠相加,得到最终的运算结果。
重叠相加法的优点是可以处理长序列,同时在处理过程中可以利用较短的子序列进行计算,从而减少计算量。
但是在相加过程中会引入重叠部分的累加误差,需要注意处理。
2. 重叠保留法(Overlap-Save Method):
重叠保留法也是将长序列分解为多个较短的子序列进行处理的方法,与重叠相加法不同的是,重叠保留法中的子序列是没有重叠的。
具体步骤如下:
a. 将长序列划分为多个不重叠的子序列,通常称为块(Block)。
b. 对每个块进行一定的处理得到相应的子序列结果。
c. 在处理过程中保留每个块的部分结果,将所有块的结果进
行拼接得到最终的运算结果。
重叠保留法的优点是可以避免重叠相加带来的累加误差,但是需要注意保留和拼接过程中的精度控制。
总结:
重叠相加法和重叠保留法都是在处理长序列时常用的方法。
它们通过将长序列分解为多个较短的子序列进行处理,从而减少计算量。
重叠相加法引入了重叠部分的累加误差,而重叠保留法通过不重叠的方式避免了此类误差。
具体选择使用哪种方法取决于应用场景和计算需求。
实验三5、由实验所得的图形知,当L>N1+N2-1时,循环卷积不会发生混叠现象,所以在这个条件下,循环卷积是线性卷积的主值,线性卷积可由循环卷积得到。
用循环卷积计算线性卷积通常也称为快速卷积。
6、实验证明重叠保留法可以用DFT 做圆周卷积来表示线性卷积,以减少存储单元和处理时间的延误。
7、一共可以有16种结果,循环相关是线性相关的一个主值区间,取值的起点不同,其序列即不同,但是一个主值区间包含的信息量是相同的,包含的频率成分都是相同的。
8、不同。
反三角波的低频分量更多一些。
不是,因为截短长度N=16不是正弦周期信号的整数倍,由于时域中的非周期截短会产生频谱泄露。
实验四(4)bz1 =[-0.0000 0.0057 -0.0122 0.0025 0.0089 -0.0049 0] az1 =[1.0000 -4.8056 10.2376 -12.2625 8.7012 -3.4719 0.6145]因此脉冲响应不变法的系统函数为:6543215432116145.04719.37012.82625.122376.108056.410049.00089.00250.00122.00057.0)(H -----------+-+-+--++-=z z z z z z z z z z z z bz2 =[0.0014 -0.0000 -0.0042 -0.0000 0.0042 -0.0000 -0.0014]az2 =[1.0000 -4.8071 10.2473 -12.2838 8.7245 -3.4849 0.6176]因此双线性变换法的系统函数为:65432164226176.04849.37245.82838.122473.108071.410014.00042.00042.00014.0)(H ---------+-+-+--+-=z z z z z z z z z z由上图可以看出:由上图可以看出,用脉冲响应不变法由于滤波器的混叠作用在过度带和阻带都衰减的较双线性变换法慢。
实验1 矩阵、序列的运算与显示一、实验目的掌握用MA TLAB 表示离散时间信号,以及它们的运算和显示。
二、实验内容与要求1. 用MA TLAB 产生并画出下列序列的样本。
a .()()()1010()1[221],025m x n m n m n m n δδ==+----≤≤∑b .()()()()()()22()[56]10200.5[410]nx n n u n u n n u n u n δ=+--++---c .()3()0.9cos(0.2/3),020nx n n n ππ=+≤≤d .()24()10cos(0.0008),0100x n n w n n π=+≤≤,式中()w n 是在【-1,1】之间均匀分布的随机序列,你如何表征这个序列?e .(){}5...,1,2,3,2,1,2,3,2, (x)n ↑= 为周期的,画出5个周期。
三、实验所用部分函数如下1.单位冲激序列(信号)生成函数impseq [x,n] = impseq(n0,n1,n2)2.阶跃序列(信号)生成函数stepseq [x,n] = stepseq(n0,n1,n2)3.序列(信号)相加函数sigadd [y,n] = sigadd(x1,n1,x2,n2)以上为MATLAB 没有,需外加入的函数(将相应函数拷贝到自己当前目录下) 4. 正(余)弦生成函数sin 、cosy = sin(x) ,y = cos(x) (注意:x 以弧度为单位) 5. 随机序列生成函数rand ,用法如:Y = rand (n) 生成n ×n 阶的均匀分布随机阵; Y = rand (m, n) 生成m ×n 阶的随机阵;rand 返回在[0,1]区间上的一个随机数;将上面的rand 写成randn 则可以生成均值为0、方差为1的正态分布的随机变量。
6.全1矩阵生成函数ones (m, n) :生成m×n阶全1矩阵7.全0矩阵生成函数zeros (m, n) :生成m×n阶全0矩阵8.离散序列绘图函数stemstem (y) 以1、2、3…为横坐标, y为纵坐标画杆形图;stem(x, y) 以x为横坐标, y为纵坐标画杆形图(x与y数据个数必须一致);stem (…,’fill’)选项’fill’指定杆顶为实心,若无此选项则默认空心。
我不应把我的作品全归功于自己的智慧,还应归功于我以外向我提供素材的成千成万的事情和人物!——采于网,整于己,用于民2021年5月12日dsp实验报告总结篇一:dsp课程设计实验报告总结DSP课程设计总结(XX-XX学年第2学期)题目:专业班级:电子1103 学生姓名:万蒙学号:指导教师:设计成绩:XX 年6 月目录一设计目的----------------------------------------------------------------------3 二系统分析----------------------------------------------------------------------3 三硬件设计3.1 硬件总体结构-----------------------------------------------------------3 3.2 DSP模块设计-----------------------------------------------------------4 3.3 电源模块设计----------------------------------------------------------4 3.4 时钟模块设计----------------------------------------------------------5 3.5 存储器模块设计--------------------------------------------------------6 3.6 复位模块设计----------------------------------------------------------6 3.7 JTAG模块设计--------------------------------------------------------7 四软件设计4.1 软件总体流程-----------------------------------------------------74.2 核心模块及实现代码---------------------------------------8五课程设计总结-----------------------------------------------------14一、设计目的设计一个功能完备,能够独立运行的精简DSP硬件系统,并设计简单的DSP控制程序。
DSP应用课程设计《实验报告》语音噪声滤波学院:电子信息工程学院姓名:王婷姓名:缪小川小组成员:班级:通信0706 学号:07211117 班级:通信0706 学号:07211128评语:指导教师签字:日期:2010-1-20 一、..................................................... 设计任务书.. (3)二、..................................................... 设计原理 4三、..................................................... 设计方案说明 (8)四、程序设计、调试与结果分析 (14)五、.......................................... 设计与调试的体会24六、.................................................. 参考文献25一.设计任务书设计题目:语音噪声滤波题目背景介绍随着信息技术的发展,信号处理正向着数字化、软件化方向发展。
数字信号处理的主要研究对象是语音信号和图像信号,语音信号的研究可以从时域和频域两个方面来进行。
其中时域的分析处理有两种方法:一种是进行语音信号分析,这属于线性处理的范畴,主要是通过信号的加减、时移、倍乘、卷积、求相关函数等来实现;另一种是生成和变换成各种调制信号,这属于非线性的范畴,主要是对信号平均累加器的动态范围进行压缩扩张,用门限方法对噪声的抑制。
对频域分析处理,即对信号的频率特性在频谱中加以分析研究,这拓展了信号分析的范围,是对不确定信号分析的主要方法。
在实际应用中,信号的时域频分析经常同时进行。
由于环境的原因,我们采集到语音信号经常含有不同程度的噪声,因此要对语音信号中的噪声滤除。
DSP利用直接存储器访问方式DM采集数据时不打扰CPU因此CP可以对语音信号进行实时地滤波。
重叠相加法与重叠保存法的原理实现侯凯(吉林大学 通信工程学院 吉林 长春 130012)0概述线性卷积是求离散系统响应的主要方法之一,许多重要应用都建立在这一理论基础上,如卷积滤波等。
用圆周卷积计算线性卷积的方法归纳如下:将长为N 2的序列x(n)延长到L,补L -N 2个零,将长为N 1的序列h(n)延长到L,补L -N 1个零。
如果L ≥N1+N2-1,则圆周卷积与线性卷积相等,此时,可有FFT 计算线性卷积,方法如下:a.计算X(k)=FFT[x(n)]b.求H(k)=FFT[h(n)]c.求Y(k)=H(k)Y(k) k=0~L -1d.求y(n)=IFFT[Y(k)] n=0~L -1可见,只要进行二次FFT,一次IFFT 就可完成线性卷积计算。
上述结论适用于x(n)、h(n)两序列长度比较接近或相等的情况,如果x(n)、h(n)长度相差较多。
例如,h(n)为某滤波器的单位脉冲响应,长度有限,用来处理一个很长的输入信号x(n),或者处理一个连续不断的信号,按上述方法,h(n)要补许多零再进行计算,计算量有很大的浪费,或者根本不能实现。
为了保持快速卷积法的优越性,可将x(n)分为许多段后处理,每小段的长与h(n)接近,其处理方法有两种:重叠相加法和重叠保留法。
1重叠相加法——由分段卷积的各段相加构成总的卷积输出假定x i (n)表示图中第i 段x(n)序列如下图:22()(1)1()0i x n iN n i N x n ≤≤+-⎧=⎨⎩则输入序列可表为:()()i i x n x n ∞=-∞=∑图1 长序列分段滤波于是输出可分解为: ()()*()()*()()i i i i i y n x n h n x n h n y n ∞∞=-∞=-∞===∑∑其中 ()()*()i i y n x n h n =由此表明,只要将x(n)的每一段分别与h(n)卷积,然后再将这些卷积结果相加起来就可得到输出序列,这样,每一段的卷积都可用上面讨论的快速卷积来计算。
《数字信号处理》实验报告年级:2011级班级:信通4班姓名:朱明贵学号:111100443老师:李娟福州大学2013 年11 月实验一快速傅里叶变换(FFT)及其应用一、实验目的1.在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中的有关函数。
2.熟悉应用FFT对典型信号进行频谱分析的方法。
3.了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。
4.熟悉应用FFT实现两个序列的线性卷积和相关的方法。
二、实验类型演示型三、实验仪器装有MATLAB语言的计算机四、实验原理在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使用离散Fouier变换(DFT)。
这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT定义为:反变换为:有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列Fourier变换的等距采样,因此可以用于序列的谱分析。
FFT并不是与DFT不同的另一种变换,而是为了减少DFT运算次数的一种快速算法。
它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。
常用的FFT 是以2为基数的,其长度。
它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末位补零的方法,使其长度延长至2的整数次方。
(一)在运用DFT进行频谱分析的过程中可能的产生三种误差1.混叠序列的频谱是被采样信号频谱的周期延拓,当采样速率不满足Nyquist定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。
避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前,先用低通模拟滤波器对信号进行滤波。
北京邮电大学实学班姓学日验报告MATLAB 实现线性卷积运算院:信息与通信工程学院级:名: ______号:期:实验名称:用索引一、实验原理 ..................................................................................................................... 3 1、算法产生背景 (3)2、算法基本思想 ...........................................................................................................................3 1)重叠相加法 (3)2)重叠保留法 ...........................................................................................................................4 二、流程图设计 . ................................................................................................................. 5 1、重叠相加法 . .............................................................................................................................. 5 2、重叠保留法 . (6)三、MATLAB 源代码 . ........................................................................................................... 7 1、重叠相加源码 ...........................................................................................................................7 2、重叠保留源码 ...........................................................................................................................8 四、实验结果与分析 ........................................................................................................... 9 ①调用CONV (计算 . ......................................................................................................................... 9 ②测试重叠相加算法 (9)③测试重叠保留算法 .....................................................................................................................9 五、讨论与总结 . ............................................................................................................... 10 1、算法效率分析: .....................................................................................................................10 A. 重叠相加法 . (10)B. 重叠保留法 . ........................................................................................................................... 11 C. 调用conv( .............................................................................................................................12 D. 综合对比分析 . ....................................................................................................................... 13 2、故障和问题分析 (14)①分段问题 . .............................................................................................................................. 14 ②运算完整性问题....................................................................................................................14 ③算法硬件实现 (14)一、实验原理1、算法产生背景DFT 是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。
在形式上,变换两端(时域和频域上)的序列是有限长的。
DFT 具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。
对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即y (n x (n *h (n通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。
因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT 的一个重要应用。
2、算法基本思想1)重叠相加法重叠相加法是将待过滤的信号分割成长为N 的若干段,如图1所示,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。
具体算法实现原理如图2所示,建立缓存序列,每次输入N 点序列,通过计算x(n和h(n 的循环卷积实现线性卷积运算,将缓存的M -1点序列和卷积结果相加,并输出前N 点作为计算结果,同时缓存后M -1点,如此循环,直至所有分段计算完毕,则输出序列y(n为最终计算结果。
2)重叠保留法重叠保留法相当于将x l(n和h(n作循环卷积,然后找出循环卷积中相当于线性卷积的部分。
在这种情况下,将序列y(n分为长为N 的若干段(如图3所示,每个输入段和前一段有M -1个重叠点。
此时只需要将发生重叠的前M -1个点舍去,保留重叠的部分并输出,则可获得序列y(n,算法如图4所示。
二、流程图设计1、重叠相加法2、重叠保留法三、MATLAB 源代码1、重叠相加源码2、重叠保留源码四、实验结果与分析对两种算法采用同一序列进行测试分析。
设x(n =(n+1 , 0≤n≤9; ℎ(n =*−2,0,+2+ 。
计算y (n =x (n ∗h(n 。
①调用conv(计算首先利用Matlab 对两序列直接运算,得出正确结果。
代码为:x=*1:1:10+,h=*-2,0,+2+,conv(x,h结果为: * -2 -4 -4 -4 -4 -4 -4 -4 -4 -4 18 20 +②测试重叠相加算法代码为:overlap_add(x,h,6结果为:* -2.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000-4.0000 -4.0000 18.0000 20.0000 +③测试重叠保留算法代码为:overlap_save(x,h,4结果为:* -2.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000 -4.0000-4.0000 -4.0000 18.0000 20.0000 +由此可见,两种算法运行正常,计算正确。
更多的测试也正确。
算法正确。
五、讨论与总结1、算法效率分析:A. 重叠相加法由上表和图1可以看出,随着数据规模增大,运算耗时呈线性增长,因而算法的时间复杂度为O(n,其中n 为数据规模。
因而重叠相加算法具有可行性和实用性。
再从算法的空间复杂度来看,由于分配的缓存空间只由分段长度确定,不随数据规模的变化而变化,因而空间复杂度为O(1。
综合考察,重叠相加法具有较好的时间和空间复杂度。
当数据量达到千万量级时,运算延时最少大约为2.328s ,可运用于对信号的实时处理。
MATLAB 实验报告 B.重叠保留法分段长度序列长度 10 100 1000 10000 100000 1000000 10000000 4 0.000512 0.001014 0.009297 0.05674 0.558865 5.221879 52.2464 10 0.000225 0.000514 0.002402 0.023194 0.216818 2.144089 22.02215 100 0.001249 0.000272 0.000787 0.006122 0.039175 0.357428 3.593282 1000 0.000881 0.000836 0.000687 0.003941 0.026044 0.236277 2.335725 10000 0.008454 0.008802 0.011107 0.011083 0.042643 0.327539 3.251762 图2.重叠保留法耗时与数据规模关系图 60 50 40 运算耗时 (s 30 20 10 0 -1.5 -10 序列长度 Millions 0.5 2.5 4.5 6.5 8.5 10.5 从上至下,依次为:N=4,10,100,10000,1000 由上表和图 2 可以看出,同重叠相加法类似,随着数据规模的增大,运算耗时呈线性增长,算法的时间复杂度为 O(n,其中 n 为数据规模.同样由于分配的缓存空间只由分段长度确定,空间复杂度为 O(1.综合考察,重叠保留法也具有较好的时间和空间复杂度.当数据量达到千万量级时,运算延时最少大约为 2.335s,可运用于对信号的实时处理. 第 11 页MATLAB 实验报告 C.调用 conv( 序列长度运算耗时 (s 10 100 1000 10000 100000 1000000 1000000 0.000113 0.000081 0.000117 0.000275 0.002492 0.032155 0.32588 图3.调用conv(函数耗时与数据规模关系图 0.35 0.3 0.25 运算耗时 (s 0.2 0.15 0.1 0.05 0 -1.5 -0.05 序列长度 Millions 0.5 2.5 4.5 6.5 8.5 10.5 由上表和图 3 可以看出,调用系统自带的线性卷积运算函数 conv(计算线性卷积,运算时间和序列长度也有线性关系.时间复杂度为 O(n.但此时的信号处理延时很小,当数据达到千万量级时,延时仅为 0.325s,实时性非常好! 第 12 页MATLAB 实验报告 D.综合对比分析分段长度 4 平均耗时(s 重叠相加重叠保留调用 conv( 10 100 1000 10000 9.52527 8.299243 0.05163 3.983497 3.4870560.05163 0.624769 0.571188 0.05163 0.376769 0.372056 0.05163 0.531758 0.523056 0.05163 图4.三种方法在不同分段长度下的耗时图 9.52527 10 3.983497 8.299243 运行耗时(对数坐标 (s 3.487056 1 0.001 0.01 0.624769 0.1 0.571188 0.376769 1 Thousands 0.531758 10 0.372056 0.1 0.05163 0.05163 0.05163 0.05163 0.5230560.05163 0.01 分段长度(对数坐标重叠相加重叠保留调用conv( 重叠保留法和重叠相加法运行效率与分段长度相关性较强.分段数和卷积运算的序列长度为非线性关系,且当分段长度维持在大约 1000 点左右时,获得最高的平均运行效率.内置函数conv(运行效率与分段数无关.重叠相加和重叠保留两者效率几乎一致. 在实际应用中,重叠保留和重叠相加主要用于实施信号处理,因而输入序列是连续输入, 在保证实时性的要求下,输入序列的分段不能太长.设想实际情况如下:设语音信号采样率为8KHz,相当于每秒输入 8000 点序列,由重叠相加法处理(重叠保留法类似.如若分段为 1000 点,考虑实际系统中为实时输出(Matlab 算法模拟里面是将所有序列保存之后再输出 ,因而每分段处理延时 0.00406/8s,又接收 1000 点延时为 1/8s,故处理总延时为 0.1255075s.此时接收延时起主要作用,影响实时性.减小接收延时则需要减小分段点数,同时使得处理延时增加.接收延时和处理延时两者是不可调和的矛盾.实际处理时,可根据实时性要求,折中选择分段点数,既满足实时性要求,又降低系统开销. 第13 页MATLAB 实验报告 2,故障和问题分析①分段问题初始时没有考虑到分段长度的限制,导致用户输入分段小于系统冲击响应 h(n的长度时运算出错.后增加一个判断语句,当出现前述情况时,自动提升分段点数,问题解决. ②运算完整性问题在写好代码之后的测试中,出现了一个十分奇怪的现象,即:当输入点数为 1000, 10000 或者更大时卷积运算最后 M-1 个结果为 0.反复测试发现,不仅 1000 和 10000,只要是分段数 N 的倍数的输入点数都存在同样问题,而其他非倍数的输入,运算与 conv( 函数运算结果完全一致.通过设置断点,逐句调试,最终发现问题的症结,当输入序列为 N 的倍数时,最后的一段卷积实际上没有做.因而将循环次数增加 1,将最后一次保留的M-1 个点补全 N 个 0,做最后一次分段卷积.修改后,测试结果正确. ③算法硬件实现第一,重叠保留和重叠相加算法在硬件实现时将算法中的临时变量都化为缓存,所以考虑缓存的大小限制,不能将输入序列分段过长,否则所需的缓存将加大,成本加大. 第二,接收延时和处理延时两者存在矛盾,减少分段长度,可减少接收延时但会增加处理延时,同理,增大分段长度,可减少处理延时,但将增加接收延时.具体实现时需要综合考虑两者的作用,去最优化值. 第三,算法实际实现时,可实时输出处理过的分段序列,与直接线性卷积相比,实时性大大增强,需要的计算单元特别是系统缓存明显减少.因而实用性很强. 第四,分段卷积能灵活计算长输入序列对 IIR 滤波器的响应,且延时较小,因而很常用.从硬件实现角度讲,重叠保留和重叠相加法效率几乎一致. 第五,测试算法性能时采用较短的 h(n序列,主要考虑到分段卷积应用在单位冲击响应较短的 IIR 滤波器. <报告结束> 第 14 页。