数字信号课程设计 - 图文

2. 窗函数 FIR

1.低通,参数为fp=1000Hz,fc=1200 Hz, As=100dB,Ap=1dB; 依次选择后,填入参数。 对比滤波前后频谱:

可以看到:在时域上看变化不大,但在频域可以看出中高频被过滤掉了。 回放时,声音浑浊低沉。

9

2.高通,参数为fc=2800 Hz,fp=3000 Hz As=100dB,Ap=1dB; 对比滤波前后频谱:

滤波前后对比,可以看出无论在时域和频域都有所变化。在频域部分,低频部分被过滤掉了。回放时,说话速度很快,频率很高,感觉音调很高。

10

3.带通,参数为fp1=1200 Hz,fp2=3000 Hz,fc1=1000 Hz,fc2=3200 Hz,As=100dB,Ap=1dB; 对比滤波前后频谱:

滤波前后对比,可以看出无论在时域和频域都有所变化。在频域部分,可以看到高频和低频部分被过滤掉了。

回放时,声音很清脆。

11

五、 设计心得体会

经过几天的设计和调试,终于把程序搞定了,在这个过程,遇到相当多的困难。刚

接触到这个课程设计时,对MATLAB的GUI一点概念都没有,自己只有去网上查找有关这方面的资料,并结合资料编写了一个很简单的GUI,并调试运行正确,当时有些激动,但当真正做起一个复杂的GUI时,感到困难重重。一开始自己制作的简单的GUI,进行参数传递时只是在Callback函数里进行传递,没有涉及到在函数之间的传递,故在制作课程时,发现很多错误,究其原因,是自己的参数传递不对,当时自己一头雾水,一点都不知道函数之间的参数要怎么传递,只有上网查资料,顺便说一下,这次课程设计还锻炼了自己上网查询资料的能力和技巧,花了很长时间终于找到了,耐着性子看完了资料,就自己试着编写程序,我首先用的是global定义全局变量的方法,运行了下程序,发现能传递参数了,但很快我发现这种方法传递参数很不好,最好少用,经常出现运行错误,然后我就用了另外的一种方法,用setappdata()和getappdata()这两个语句配合使用进行参数的传递,虽说这种方法比较麻烦,但经多次测试没有发现什么错误,因此我在本课程设计中就用这种方法进行参数的传递。参数问题解决了,就要进行滤波器的设计,自己首先看书了解了下滤波器的设计过程,参照了从图书馆借来的书,采用了滤波器的完全设计法进行了滤波器的设计,并编写了相应的程序代码,在这个过程中,自己没注意到的问题是滤波器的采样点数N要与fft进行变换的点数对应,不然程序不能正确执行。对于带通和带阻滤波器的设计,要注意参数的二维性。从书中我们了解到,带通和带阻滤波器的设计需要通带上限频率、通带下限频率、阻带上限频率、阻带下限频率、通带波纹、阻带衰减和采样频率,然而低通和高通滤波器的设计只需要通带截止频率、阻带截止频率、通带波纹、阻带衰减和采样频率,所以我设计了相应的屏蔽代码。同时,为了方便我们能看到各种类型的滤波器,设计了下拉菜单,并设计了查看滤波器的特性的选择框,极大地符合使用者的偏好。经过了一天左右的时间,我完成了GUI的大部分,第二天我接着做时,我想加入新的功能,我发现了GUI设计的一些漏洞,即新加入的控件它自己顺着编号,不顾我以前所删控件的编号,这给我编写程序造成了极大的不方便,我不得不重新创建新的,把旧的复制过来重新命名各个控件的tag,有过这次经验,我发现只要在Tools中的GUI Options选择Generate FIG-file only就可以避免这个问题,等自己确定界面布局好了之后,再把之前改变的选项改为原来的,这样生成的代码就能一一对应起来了。马马虎虎地做完了,周五的时候老师给我们全班具体地讲了设计中的一些问题,我发现老师告诉我们的传递参数的方法是很方便和简单的,即handles.xx的方法。但自己试了下这种方法偶尔会出现错误,和同学们交流下,他们也有同样的问题,大家都有点怀疑是自己的MATLAB的版本没有老

>>灞曞紑鍏ㄦ枃<<
12@gma联系客服:779662525#qq.com(#替换为@)