《信号与系统》课程设计——回波的产生与消除班级:学生姓名:学号:摘要MATLAB语言具备高效、可及推理能力强等特点,是目前工程界流行最广泛的科学计算语言。信号与系统是一门理论与实践紧密结合的课程。MATLAB强大的运算和图形显示功能,可使信号与系统上机实验效率大大提高。特别是它的频谱分析和滤波器分析与设计功能很强,使数字信号处理工作变得十分简单,直观。本实验就是运用MATLAB对声音信号进行分析与滤波,并估计反射物距离。关键词:MATLAB;声音信号;回波产生,回波消除,估计反射物距离,频谱分析;滤波器。一.设计要求(1)利用声音信号x产生带有回声的声音信号y。(2)从带有回声的信号y中消除回声。(3)从y中估计反射物的距离二.设计内容和步骤理论依据根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的概念,采样定理;回声信号,卷积,相关分析;时域信号的FFT分析;数字滤波器设计原理和方法)。1、声音信号x的产生:声音信号x,既可以从现成的声音文件(.wav)中获取;也可以利用MATLAB录音命令现行录制(可自行设置采样频率等录音参数)。我们直接利用现成的声音文件(login.wav),绘制其时域波形,对此音频信号用FFT作谱分析并播放。声音信号x的产生程序与图形分析如下:[x,fs]=wavread('login');figure(1);subplot(3,1,1);plot(x(1:40000));title('原始信号');y=fft(x);subplot(3,1,2);plot(abs(y));title('幅值');subplot(3,1,3);plot(angle(y));title('相位');sound(x,fs);图12、带回声的声音信号y产生:在已有声音信号x的基础上产生带回声的声音信号,可以表达为在原信号的基础上叠加其延时衰减的分量。假设只有一个回声的情况下,可简化其模型为:y(n)=x(n)+ax(n-N)(式1)a为反射系数;N为延迟时间。利用此原理我们进行编程实现:(1)在我们编程实现回波产生的基础上,再绘制其时域波形,对其进行FFT频谱分析,绘制频谱图并播放。(2)分别改变反射系数a和延迟时间N的大小,播放产生的回声信号y,分析反射系数a和延迟时间N对原始声音的影响。(3)按照以上思路,当有两个、三个或更多回声,我门这儿讨论三个回声时的情况(1)我们编程实现了一个回声信号的声音信号y,程序与图形分析如下(并播放):此处,N=,a=0.7[x,fs]=wavread('login');x1=x(1:40000);x2=x(1:40000);x1=[x1',zeros(1,18000)];x2=[zeros(1,18000),0.7*x2'];y=x1+x2;figure(2);subplot(3,1,1);plot(y(1:58000));title('回声');y1=fft(y);subplot(3,1,2);plot(abs(y1));title('幅值');subplot(3,1,3);plot(angle(y1));title('相位');sound(y,fs);图2(2)○1保持N不变,改变a大小分析声音信号并播放:我们取N=,a从0.1到1:观察每个情况下声音信号的变化:回声信号的强度随着a的增大而变大○2保持a不变,改变N大小分析声音信号并播放:我们取a=0.7,N从10000到50000观察每个情况下声音信号的变化:N的值不能太大也不能太小,当N大于40000或小于180000时将当N在18000到40000这个范围内取值时,随着N的增大回声与原来的声音信号之间的时间间隔越(3)有三个回声的信号y的产生程序与图形分析如下:[x,fs]=wavread('login');x1=x(1:40000);x2=x(1:40000);x3=x(1:40000);x4=x(1:40000);x1=[x1',zeros(1,18000)];x2=[zeros(1,6000),0.7*x2',zeros(1,12000)];x3=[zeros(1,12000),0.4*x3',zeros(1,6000)];x4=[zeros(1,18000),0.1*x4'];y=x1+x2+x3+x4;figure(2);subplot(3,1,1);plot(y(1:58000));title('回声');y1=fft(y);subplot(3,1,2);plot(abs(y1));title('幅值');subplot(3,1,3);plot(angle(y1));title('相位');sound(y,fs);图33.从带有回声的声音信号中恢复原信号设计合适的滤波器,对带有回声的声音信号进行滤波,恢复原信号。绘制所设计滤波器的幅频和相频特性,及滤波后的信号的时域波形和频谱图。我们这儿就只讨论有三个回声的情况:恢复信号程序与图形分析如下:b=1;a=zeros(1,18000);a(1)=1;a(6001)=0.7;a(12001)=0.4;a(18001)=0.1;z1=filter(b,a,y);z2=fft(z1,1024);figure(3);subplot(3,1,1);plot(abs(z2));title('滤波幅值');subplot(3,1,2);plot(angle(z2));title('滤波相位');subplot(3,1,3);plot(z1(1:40000));title('滤波信号');sound(z1,fs);图44.从带有回声的声音信号中估计反射物的距离采用相关分析法从带有回声的声音信号中估计反射物的距离我们这儿也是从三个回声的情况下考虑的:程序如下:h=xcorr(y);figure(4);subplot(5,1,1)plot(abs(h));title('最值');h1=h(56000:60000);[r1,t1]=max(h1');t1=t1+56000;subplot(5,1,2);plot(h1);title('点1');h2=h(62000:66000);[r2,t2]=max(h2);t2=t2+62000-t1;subplot(5,1,3);plot(h2);title('点2');h3=h(68000:72000);[r3,t3]=max(h3);t3=t3+68000-t1;subplot(5,1,4);plot(h3);title('点3');h4=h(74000:78000);[r4,t4]=max(h4);t4=t4+74000-t1;subplot(5,1,5);plot(h4);title('点4');t=[t2,t3,t4]通过编程计算出三个延时的结果如下所示:t=[t2,t3,t4]t=60001200018000