您好,欢迎访问三七文档
一、回波的产生与消除【设计原理】1、声音信号x的产生:声音信号x,既可以从现成的声音文件(.wav)中获取;也可以利用MATLAB录音命令现行录制(可自行设置采样频率等录音参数)。2、带回声的声音信号y产生:带回声的声音信号,可以表达为在原信号的基础上叠加其延时衰减的分量。假设只有一个回声的情况下,可简化其模型为:y(n)=x(n)+ax(n-N)(式1)a为反射系数;N为延迟时间。思考:分别改变反射系数a和延迟时间N的大小,播放产生的回声信号y,分析反射系数a和延迟时间N对原始声音的影响。3、回声消除如何从信号y中恢复出信号x?即是(式1)的一个逆向求解过程。因此回声消除的关键可以通过(式1)的模型建立从信号y中恢复信号x的模型。只要恢复模型建立,即可将信号y作为输入信号,求得恢复后的信号x’。4、从信号y中估计反射物的距离从信号y中估计反射物的距离,可理解为估计(式1)中的N。也就是,估计y(n)中的原始声音信号x(n)与其延时衰减分量ax(n-N)的相关联的程度。下面简单介绍一下信号相关的概念。在统计通信及信号处理中,相关的概念是一个十分重要的概念。相关函数和信号的功率谱有密切关系。所谓相关是指两个确定信号或两个随机信号之间的相互关系,对于随机信号,信号一般是不确定的,但是通过对它的规律进行统计,它们的相关函数往往是确定的,因而在随机信号处理中,可以用相关函数来描述一个平稳随机信号的统计特性。已知x(n)和y(n)是两个实数序列,它们的自相关函数,[]xxn、,[]yyn,及互相关函数,[]xyn分别定义为:,,,[][][][][][][][][]xxmyymxymnxmnxmnymnymnxmnym(式2)考虑如何利用相关性从信号y中估计反射物的距离。源程序及输出结果展示:[x,fs]=wavread('ak47.wav');%读出信号n=5000;c=0.6;%c为反射系数,可控制回声声强大小g=zeros(1,n+1);%1*n+1阶零矩阵g(1)=1;%令第一个元素为1x1=conv(g,x);%g与x做卷积,形成原始信号h=zeros(1,n+1);%1*n+1阶零矩阵h(n+1)=1;%令第n+1个元素为1x2=c*conv(h,x);%h与x做卷积再与反射系数相乘,形成回声信号y=x1+x2;%信号叠加figure(1);%创建图形1subplot(3,1,1);plot(x1);title('原始信号');%画出原始信号波形subplot(3,1,2);plot(x2);title('回声信号');%画出回声信号波形subplot(3,1,3);plot(y);title('叠加信号');%画出叠加信号figure(2);subplot(4,1,1);plot(abs(x));title('原始信号幅值');%画出原始信号幅值subplot(4,1,2);plot(angle(x));title('原始信号相位');%画出原始信号相位subplot(4,1,3);plot(abs(y));title('叠加信号幅值');%画出叠加信号幅值subplot(4,1,4);plot(angle(y));title('叠加信号频谱');b=1;a(1)=1;%令矩阵a的第一个元素为1a(n+1)=2;%令矩阵a的最后一个元素为0.4z1=filter(b,a,y);%从y中滤出产生滤波信号z=z1(1:length(x));g=xcorr(y);%产生自相关gfigure(3);subplot(3,1,1);plot(abs(g));title('y的自相关函数');n1=10000;n2=25000;n3=50000;g1=g(n1:n2);%第一个极值点的大概区间[r1,t1]=max(g1');%找出峰值及坐标g2=g(n2:n3);%第二个极值点大概区间[r2,t2]=max(g2');%找出峰值及坐标subplot(3,1,2);plot(g1);title('原声音信号极值点1')subplot(3,1,3);plot(g2);title('回声信号自相关极值点')t2=t2+n2-t1-n1%回声与原始声音之间的距离,也为相差采样点数t3=t2/fs%声音传到障碍物的时间n=r2/r1;%自相关函数衰减幅度figure(4)subplot(3,1,1);plot(y);%画出带回声信号title('带回声信号');subplot(3,1,2);plot(z);%画出去除回声后的信号title('去除回声信号');subplot(3,1,3);plot(x);%画出原始信号title('原始信号')sound(x1,fs);%原始信号pause(5)sound(x2,fs);%回声信号pause(5)sound(y,fs);%叠加信号b=1;a(1)=1;a(14135)=0.6;%通过前面步骤,测出了延时14134个采样点z1=filter(b,a,y);z2=fft(z1,1024);%快速傅里叶变换figure(5)subplot(4,1,1);plot(abs(z2));title('滤波幅值');subplot(4,1,2);plot(angle(z2));title('滤波相位');subplot(4,1,3);plot(z1(1:4400));title('滤波信号');subplot(4,1,4);plot(x(1:4400));title('原始信号');
本文标题:回波的产生与消除
链接地址:https://www.777doc.com/doc-4813368 .html