《弹拨音乐滤波去噪——使用凯塞窗设计的滤波器》 第11页 共15页
4出现的问题和解决方法
在这前面一周的时间里,我们每天的上午都是待在学校的机房上机,同时,老师跟我们进行讲解,然后,当我们有不懂的问题时可以随时向老师请教。在老师没有进行讲解时,我总以为这次的课程设计会有不小的难度,可是当老师跟我们讲解了之后,我却发现,我们的课程设计其实也不是很难,只要我们细心一点,并有耐心,就能解决我们所遇到的问题。
首先,我按照课程设计的要求在网络上找到一段音乐,并对其进行格式转换及属性变换,但是当我真正制作完成之后并存盘后,运行MATLAB后,才感觉音乐文件过于长,造成出现的频谱图很模糊,根本看不清楚,后面看了一下任务指导书及问了同学之后,截取其中的一小段,效果就好了许多。
在此次课程设计中,虽然没有预计的那么难,可还是遇到了一些小小的问题。庆幸的是,能够在老师和同学的帮助下解决了。我觉得最重要的就是要有耐心,要细致,要不懂就问,这样,只要自己坚持,一切问题都会解决的。
《弹拨音乐滤波去噪——使用凯塞窗设计的滤波器》 第12页 共15页
5 结束语
在本次课程设计中,让我知道了以前所学《信号与系统》与《数字信号处理》的结合,并在实际运用中设计滤波器的过程。课程设计不仅要求对滤波器理论的研究,更重要的是实际设计中遇到的问题。
因为有了这次课程设计,我不得不对其设计原理进行更深一层次的理解,对书中原来学到的理论,仅知道了其表面,而不知其原因。在设计中也使我对一些概念有了更深刻的认识。例如:在指标方面,我混淆了模拟指标和数字指标的概念,经过老师的点拨,自己更加明确,而且记忆深刻。还有在课程设计中每一次的数据输入都有其重要意义,用MATLAB编译程序时,可以根据滤波器指标的要求实时知道对滤波器的影响。例如,编好程序后,调试成功,任意改变输入阻带或者通带衰减,可以看到输出波形的变化,改变截止频率wc,同样可以看到输出波形的变化。由此,对理论的理解就更加简单方便,而且记忆力深刻。
除此之外,对程序的编译不是一蹴而就的,而是经过多次的编译与调试。以前用MATLAB就是简单的输入,可以说都不是自己的劳动成果,但这次不一样,课程设计没有别人给你编好,而是自己写,出错率就大大提高了,但这是过程,学习就是在过程中进行的,经过自己几天的脑力劳动,再加上同学们的帮助,不仅对读程序有了很大提高,而且自己的编译水平也上了一个新台阶,更加熟系了MATLAB的应用,也对其中的函数有了大概的了解,对其中一些函数也相当熟练,滤波器设计中用到了ceil()、freqz()等很重要的函数,虽然可以用fir1()、fir2()可以直接调用,但那样就达不到对真正理论设计过程的 理解和运用。
完成整个设计过程后,学到的东西已经不仅仅上面的那些东西,还有就是同学之间的共同努力和探讨和设计过程中的每一个细节,也许每一个细节的错误就可能导致结局的失败,所以我认为这次收获最大的莫过于静心,学习不能急,一定要冷静,心无旁骛,不放过任何一个细节,就能带来凯旋的消息。
在此,感谢老师一学年以来对我们不仅学习上的关心,还有生活中的照顾,我也不会辜负老师的期望,继续努力深造。
《弹拨音乐滤波去噪——使用凯塞窗设计的滤波器》 第13页 共15页
参考文献
[1] 程佩青.数字信号处理教程〔M〕.北京:清华大学出版社,2002. [2] 刘敏,魏玲.Matlab通信仿真与应用〔M〕.北京:国防工业出版社,2001. [3] Sanjit K.Mitra 著,孙洪,余翔宇 译,《数字信号处理实验指导书》,电子工业出版社,2005 年。
[4] Edward W. Kamen, Bonnie S.Heck 编,《信号与系统基础——应用Web 和MATLAB(第二版)》,科学出版社,2002 年。
[5] 张贤达 编, 《现代信号处理(第二版)》,清华大学出版社,2002 年。
《弹拨音乐滤波去噪——使用凯塞窗设计的滤波器》 第14页 共15页
附录1:弹拨音乐滤波去噪——用凯塞窗设计的滤波器源程序清单 [x,fs,bits]=wavread('Music.wav'); sound(x,fs,bits); N=length(x); fn=1900; t=0:1/fs:(N-1)/fs;
x=x';y=x+ 0.1*sin(fn*2*pi*t); sound(y,fs,bits);
X=abs(fft(x)); Y=abs(fft(y));
X=X(1:length(X)/2); Y=Y(1:length(Y)/2); deltaf=fs/N;
f=0:deltaf:fs/2-deltaf; subplot(2,2,1); plot(t,x); grid on;
xlabel('时间(单位:s)'); ylabel('幅值'); title(' 原始音乐信号'); axis([0,4,-1,1]); subplot(2,2,2); plot(f,X); grid on;
xlabel('频率(单位:Hz)'); ylabel('幅度谱');
title('音乐信号幅度谱图'); axis([0,4000,0,5000]); subplot(2,2,3); plot(t,y);grid on;
xlabel('时间(单位:s)');
《弹拨音乐滤波去噪——使用凯塞窗设计的滤波器》 第15页 共15页
ylabel('幅值');
title(' 加入单频干扰后音乐信号'); axis([0,4,-1,1]); subplot(2,2,4); plot(f,Y);grid on;
xlabel('频率(单位:Hz)'); ylabel('幅度谱');
title('加入干扰后的音乐信号幅度谱图'); axis([0,4000,0,5000]);
fpd=1800;fsd=1850;fsu=1950;fpu=2000;Rp=1;As=100; fcd=(fpd+fsd)/2;fcu=(fpu+fsu)/2; df=min((fsd-fpd),(fpu-fsu));
wcd=fcd/fs*2*pi;wcu=fcu/fs*2*pi;dw=df/fs*2*pi; wsd=fsd/fs*2*pi;wsu=fsu/fs*2*pi; M=ceil((As-7.95)/(2.285* dw)+1)+1; n=0:M-1; beta=0.1102*(As-8.7); w_kaiser= kaiser(M,beta);
hd_bs=ideal_lp(wcd,M)+ideal_lp(pi,M)-ideal_lp(wcu,M); h_bs=w_kaiser'.*hd_bs;
[db,mag,pha,grd,w]=freqz_m(h_bs,1); figure (2);
subplot(2,2,1);plot(w,db); grid on; xlabel('频率');ylabel('db'); subplot(2,2,2);plot(w,mag); grid on; xlabel('频率');ylabel('幅度'); subplot(2,2,3);plot(w,pha); grid on; xlabel('频率');ylabel('相位'); subplot(2,2,4);plot(h_bs);grid on; xlabel('频率');ylabel('滤波器脉冲响应');
《弹拨音乐滤波去噪——使用凯塞窗设计的滤波器》 第16页 共15页
y_fil=fftfilt(h_bs,y);
Y_fil=abs(fft(y_fil));Y_fil=Y_fil(1:length(Y_fil)/2); figure (3);
subplot(3,2,1);plot(t,x);grid on; xlabel('时间');ylabel('原始信号'); subplot(3,2,2);plot(f,X);grid on; xlabel('时间');ylabel('加入的噪声信号'); subplot(3,2,3);plot(t,y);grid on; xlabel('频率');ylabel('原始信号频谱'); subplot(3,2,4);plot(f,Y);grid on;
xlabel('频率');ylabel('加入的噪声信号频谱'); subplot(3,2,5);plot(t,y_fil);grid on; xlabel('时间');ylabel('滤波之后的信号'); subplot(3,2,6);plot(f,Y_fil);grid on;
xlabel('频率');ylabel('滤波之后的信号频谱');