回声信号检测系统设计28终期报告
《信号与系统A(2)》课程项目 实施报告 题目( B ): 回声信号检测系统设计 组 号: B28 任课老师: 组 长:________ ____ 成 员:_____________ 成 员: ____________ 成 员: _______________ 成 员:_____________ 联系方式: _____13391098051_______________ 二零 15年 5 月 22 日 书目: 一、课程项目实施方案 二、项目的设计过程 单次回声的分析与消退 1、回声的产生及信号的时域、频域分析 2、自相关函数分析回声延时量 3、用迭代法求回声衰减系数 4、回声的消退 多次回声的分析,与消退 1、回声的产生和回声延时量的分析 2、用归一化法估算回声衰减系数 3、回声的消退 三、项目的结果分析 四、分工合作状况 参考文献 附录(matlab代码) 一、 课程项目实施方案 题目要求: B组 回声信号检测系统设计 设计一个回声信号检测系统,能够检测出原信号中包含的回声信号,并分析回声信号的参数。要求: (1)输入混有回声的声音(或信号源); (2)设计检测系统,分析回声信号产生的缘由、分析回声信号的幅度、分析回声信号的延迟量; (3) 能够现场演示。 设计思想:我们组的设计思想是利用matlab软件平台,用程序人为制造回声,并且在仅知道回声信号的条件下,分析延时量和衰减系数,从而消退回声,并且测出声源与障碍物的距离。 二、 项目的设计过程 单次回声的分析与消退 1、回声的产生及信号的时域、频域分析 对于已经采集好的一段语音信号,利用matlab的”audioread”吩咐可以对该信号进行读取和采样,本项目中采纳的文件为wav文件,采样频率为44100. [x,fs]=audioread( E:ceshi.wav ); 利用plot和fft函数可以对已采集的信号分别绘制时域波形图和经快速傅里叶变换得到的频谱图;abs和angle函数可以绘制信号频域的幅值与相位图。 利用zeros函数创建空矩阵可以对原始信号进行延时,并产生回声。 本例子中,假设延时量为8000个采样点,衰减系数为0.4。 同样对回声信号y进行时域、频域分析。 2、自相关函数分析回声延时量 自相关函数的数学定义为: 同一时间函数在瞬时t和t+a的两个值相乘积的平均值作为延迟时间t的函数,它是信号与延迟后信号之间相像性的度量。简洁地说,自相关函数是用来表征一个信号在不同时刻t1,t2状态之间的相关程度,其在某一时间点的值越大,相关程度越高。 在matlab中,对于一个混有回声的语音信号,可以利用xcorr自相关函数可以求出回声信号与原始信号的采样点之差,进而求得延时量。 从自相关函数图像中可以看到,在采样点的中心有一最大的幅值,其含义就是当延时量为零时,信号相关程度最高;而在这一峰值的两侧有两个次大的幅值,其含义就是在该处信号相关程度次高;而在别的点处其相关程度相对于该2个峰值都可以忽视,因此算出这2个峰值所对应的采样点之差,就是回声信号中,原始信号与回声信号对应的采样点之差。 由此,可以计算出该信号中采样点之差为8000个单位,这与我们所假设的值是吻合的。最终,将这个采样点之差除以采样频率,即,便可得到实际的延时量。 3、用迭代法求回声衰减系数 已知回声的延迟量后,还须要知道回声的衰减系数才可以确定回声信号。对于一个一次回声信号,我们可以采纳迭代的方法来求衰减系数: 设xn为原始信号,yn为原始信号与回声信号的叠加则有: y(1)=x(1) Y(1+N)=X(1+N)+aX(1) Y(1+2N)=x(1+2N)+ax(1+N) … y(1+(k-1)N)=x(1+(k-1)N)+ax(1+(k-2)N) Y(1+kN)=ax(1+(k-1)N) 上述迭代的公式可以由下面线段图来形象的说明: y序列的第一个点是没有回声的,在第(1+N)、(1+2N)、……、(1+(k-1)N)的点都是由原始信号与衰减后回声信号叠加而成的,最终一个(1+kN)个点是仅含衰减后的回声的。 由图像可以看出:设y(n)的长度为L,对于k,则满意1+kNL(且k是整数)这个k是唯一的并且可求的。 因此由最终一个式子逐级带回上面的式子,将含x(n)的项全迭代成含y(n)和衰减系数α的项,最终可以得到一个关于α的一元k次方程。 1/a*y(1+kN)=y(1+(k-1)N)-ay(1+(k-2)N)+a^2*y(1+(k-3)N)-a^3*y(1+(k-4)N)+.a^k*y(1) 接着用matlab中的roots函数可以对α进行求解。 但是对于求解出的k个根,解除虚数和不在0~1范围内的数,可能仍有一些根是满意条件的。 这时候我们可以将上述的迭代公式从y(2)起先计算,即: y(2)=x(2) Y(2+N)=X(2+N)+aX(2) Y(2+2N)=x(2+2N)+ax(2+N) … y(2+(k-1)N)=x(2+(k-1)N)+ax(2+(k-2)N) Y(2+kN)=ax(2+(k-1)N) 对于同一个信号衰减系数必定相同,那么在两个方程中,相同的根便是所求的α。 我们组为了实现程序的的普遍性,对程序进行了优化,自动找出两组解中相同的解。 因此用迭代法可以精准的算出回声的衰减系数。 4、回声的消退 由上面求解得到的延时量N_delay=8000,衰减系数α=0.4,可以写出原始信号与含回声信号的关系式y(n)=x(n)+0.4x(n-8000),其系统函数为 H(z)= 在matlab中可以用filter函数对y信号进行滤波: z即为滤波完后的信号,sound(z,fs)发觉单次回声已经全部消退。 多次回声的分析,与消退 1、回声的产生和回声延时量的分析 多次回声的产生原理与一次回声类似,利用zeros函数创建空矩阵可以对原始信号进行延时。 本例中延时量分别为8000个和12000个采样点,衰减系数分别为0.4和0.2. 同样的,用xcorr自相关函数计算延迟量。 其中N_delay1是第一次回声延迟的采样点,N_delay2是其次次回声延迟的采样点。 2、用归一化法估算回声衰减系数 加入两次回声后,无法采纳之前单次回声的方法计算衰减系数,因为无法确定唯一的k来列出迭代的方程式。我们采纳自相关函数的归一化法估算回声衰减系数。详细过程如下: 设Ry(n)为y(n)序列的自相关函数,Rx(n)为x(n)序列的自相关函数。由自相关函数的定义可以化简得到以下方程: Ry(n)=(1++)Rx(n)