matlab课程设计-基于matlab的回波信号的产生与消除

上传人:简****9 文档编号:107231893 上传时间:2019-10-18 格式:DOC 页数:12 大小:524KB
返回 下载 相关 举报
matlab课程设计-基于matlab的回波信号的产生与消除_第1页
第1页 / 共12页
matlab课程设计-基于matlab的回波信号的产生与消除_第2页
第2页 / 共12页
matlab课程设计-基于matlab的回波信号的产生与消除_第3页
第3页 / 共12页
matlab课程设计-基于matlab的回波信号的产生与消除_第4页
第4页 / 共12页
matlab课程设计-基于matlab的回波信号的产生与消除_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《matlab课程设计-基于matlab的回波信号的产生与消除》由会员分享,可在线阅读,更多相关《matlab课程设计-基于matlab的回波信号的产生与消除(12页珍藏版)》请在金锄头文库上搜索。

1、数字信号处理课程设计题目:基于MATLAB的回波信号的产生与消除课程:MATLAB课程设计姓名:学号:摘要在这个课程设计中,利用matlab采集一段语音,在这段语音的基础上,加入一定延时和衰减的回音,最后消去回音并且测出延时时间来计算障碍物距离正文设计目的与要求采集语音:采集一段语音,绘制其时域波形,对此音频信号用FFT作谱分析。加入回声:对采集的语音进行处理,加入一段回声,并绘制其时域波形,对其进行FFT频谱分析,绘制频谱图。从带有回声的声音信号中恢复原信号:设计合适的滤波器,对带有回声的声音信号进行滤波,恢复原信号。绘制所设计滤波器的幅频和相频特性,及滤波后的信号的时域波形和频谱图。从带有

2、回声的声音信号中估计反射物的距离:采用相关分析法从带有回声的声音信号中估计反射物的距离。具体内容及原理(1)语音采集利用matlab采集一段语音并保存,代码如下fs=8000;x=wavrecord(3*fs,fs,double);wavplay(x,fs);wavwrite(x,原始信号); /存储音频:原始信号(2)原始信号的时域波形,FFT频谱分析代码如下subplot(3,1,1);plot(x); grid on;xlabel(时间); ylabel(幅值); title(原始信号时域波形);subplot(3,1,2);wx=fft(x);f=(0:3*fs-1)*fs/(3*fs

3、);plot(f,abs(wx); grid on; xlabel(频率); ylabel(幅值); title(幅频特性);subplot(3,1,3);plot(f,angle(wx); grid on;xlabel(频率); ylabel(相位) ;title(相频特性);图如下:(3)加入回声在已有声音信号x的基础上产生带回声的声音信号,可以表达为在原信号的基础上叠加其延时衰减的分量。假设只有一个回声的情况下,可简化其模型为:y(n)=x(n)+ax(n-N)a为反射系数;N为延迟时间。在这里,取a=0.5,N=2400(即0.3秒的延时)下面则加入回声且保存代码如下:N=2400;y

4、=x;zeros(N,1)+0.5*zeros(N,1);x;wavwrite(y,加回声后的信号);加回声后信号附件(双击打开):(4) 加回声后信号的时域波形,FFT频谱分析代码如下:subplot(3,1,1);plot(y); grid on;xlabel(时间); ylabel(幅值); title(加回声后信号时域波形);subplot(3,1,2);wy=fft(y);f=(0:3*fs+N-1)*fs/(3*fs+N);plot(f,abs(wy); grid on; xlabel(频率); ylabel(幅值); title(幅频特性);subplot(3,1,3);plot

5、(f,angle(wy); grid on;xlabel(频率); ylabel(相位) ;title(相频特性);图如下:(5) 从带有回声的声音信号中恢复原信号且估计反射物的距离这里把信号的恢复和反射物距离的估计放到一起是基于这么一种考虑,说明如下:在回声产生的过程中,用到了:y(n)=x(n)+ax(n-N),用的a=0.5,N=2400。然而现在要从加回声后的信号中恢复原信号,应该是在这么一种前提下,即“只有y(n)已知,其他都是未知的”。就是说,要假设我们并不知道原信号,且a与N都是未知的,这就给信号的恢复带来了困难,如果直接用y(n)=x(n)+0.5*x(n-2400)是不合理的

6、。这个时候就要用到对反射物距离的估计的过程,在这个过程中利用相关分析法可以估算出N的值,利用N来算反射物的距离,求得N,则可以进一步求得a,具体方法和原理如下:如何求N利用自相关函数xcorr来估计N,对于信号x(n),其长度为N,其求得的自相关函数为r(m)=,其中m的范围为-(N-1)到N-1,而且显然是左右对称的。下面是一个简单例子运行代码xcorr(1 2 3)结果如下ans =3.0000 8.0000 14.0000 8.0000 3.0000自相关函数是对函数本身在两个时刻t1,t2的相关程度的一种衡量标准,对于加回声后信号y(n)=x(n)+ax(n-N),y(n)是由x(n)

7、与它的一个衰减延时ax(n-N)叠加而成,因为相关函数是函数本身相关程度的一种衡量,可以看到,y(n)的自相关函数将出现几个极值点,自相关函数为r(m)=,对于y(n)极值点应该出现在m=0,m=+-N,这时候相关程度相对较大。所以只要求出两个极值点之间的距离就能得到N如何求a知道N后该怎么求得a值,下面是一种想法:y(n)是x(n)前补零与后补零的叠加,于是有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(n)的长度为L

8、,对于k,则满足1+kNL现在逐级代入,可得1/a*y(1+kN)=x(1+(k-1)N)=y(1+(k-1)N)-ax(1+(k-2)N)=y(1+(k-1)N)-ay(1+(k-2)N)+a2*x(1+(k-3)N)=.=y(1+(k-1)N)-ay(1+(k-2)N)+a2*y(1+(k-3)N)-a3*y(1+(k-4)N)+.ak*y(1)即1/a*y(1+kN) =y(1+(k-1)N)-ay(1+(k-2)N)+a2*y(1+(k-3)N)-a3*y(1+(k-4)N)+.ak*y(1)以此为方程来求解a为方便理解,下面是一个简单例子取x(n)=1 2 3 4 5 a=0.5 N

9、=2则有x(n) =1 2 3 4 5x(n-2)= 0.5 1 1.5 2 2.5y(n) =1 2 3.5 5 6.5 2 2.5有y(1)=x(1)y(3)=x(3)+ax(1)y(5)=x(3)+ax(5)y(7)=ax(5)得到1/a*y(7)=y(5)-ay(3)+a2*y(1)即a3*y(1)-a2*y(3)+a*y(5)-y(7)=0把y(1),y(3),y(5),y(7)代入,用matlab求解a,代码如下roots(1 -3.5 6.5 -2.5)结果如下ans = 1.5000 + 1.6583i 1.5000 - 1.6583i 0.5000 所以求得a=0.5,是正确

10、的,而且在求解过程中只用到了y(n)与N下面来具体求解回声的这个问题利用自相关函数求N代码如下r=xcorr(y);plot(r);grid on;title(y的自相关函数);u,v=max(r);r1=r;r1(v-100:v+100,1)=0;u1,v1=max(r1);N=v-v1;下面是自相关函数的图像程序运行结果如下N = 2400这与产生回声是所给的N是对的上的,求出的N是正确的,求得N后,就可以估计反射物的距离反射物的距离估计N=2400,而采样频率为fs=8000Hz,可得延时t=N/fs=0.3s设反射物距离为s,声速为v,则有2*s=v*t得s=v*t/2声速大概在340

11、m/s左右,把t=0.3s,v=340m/s代入,求得s=51m,即反射物的距离为51米接着来求解a已知N,求解a上面已经说明了求解的方法,直接使用,代码如下for k=1:11 t(k)=(-1)k*y(2400*(k-1)+1,1);endroots(t)求解结果如下ans = 4.8486 + 4.4069i 4.8486 - 4.4069i -4.2880 -0.5868 + 0.5978i -0.5868 - 0.5978i -0.6045 0.2255 + 0.6507i 0.2255 - 0.6507i 0.9181 0.5000 把不合理的根舍掉,则只剩0.9181和0.5,这

12、个时候就遇到了问题,有两个根都合理,该如何解决?在前面我们是从y(1)开始,一级级往后推,用的系数是y(1),y(2401),y(4801).当然我们也可以从y(2)开始,一级级往后推,用系数y(2),y(2402),y(4802).对于a来说是不变的,所以在两个求根结果中一样的根就是a,从y(2)开始的求解代码如下for k=1:11 t(k)=(-1)k*y(2400*(k-1)+2,1);endroots(t)求解结果如下ans = 5.8416 -5.2057 -0.8448 + 0.3529i -0.8448 - 0.3529i 0.1828 + 0.6540i 0.1828 - 0

13、.6540i 0.6334 0.5000 -0.1119 与上面的结果比较,只有0.5是共同的根,所以a=0.5,这与在产生回声中给定的a是一样的,所以a的求解正确求得N与a后,下面就可以恢复原信号了从带有回声的声音信号中恢复原信号由上面的求解得到N=2400,a=0.5,所以y(n)=x(n)+0.4*x(n-2400)现在是已知y(n),求解x(n),这个时候x(n)是未知其系统函数为知道系统函数后,可以调用filter函数filter是一维数字滤波器其使用方法如下:Y = filter (B,A,X) ,输入X为滤波前序列,Y为滤波结果序列,B/A 提供滤波器系数,B为分子, A为分母整个滤波过程是通过下面差分方程实现的:a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + . + b(nb+1)*x(n-nb)- a(2)*y(n-1) - . - a(na+1)*y(n-na) 下面从带有回声的声音信号中恢复原信号并保存,并且画出时域图与频域图代码如下a=1,zeros(1,2399),0.5;b=1;x1=filter(b,a,y);wavwrite(x1,恢复后的信号)subplot(3,1,1);plot(x1); grid on;xlabel(时间); ylabel(幅值); title(恢复后的信号时域波形);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号