文档介绍:任务(一)
一、名称:滤波器的设计和应用
二、任务:
设计低通、带通、高通三种巴特沃斯滤波器。观察所设计滤波器的幅频、相频曲线。用同一段音频信号通过不同的滤波器。画出滤波后相应的频谱图,并重放滤波后的声音信号。试听滤波结果,并分析滤波器的作用。
参考结果如图1-1和1-2所示:
图1-1
图1-2
三、相关知识:
滤波器是一个以特定方式设计出来的系统,用来改变输入信号的频谱分布。信号通过滤波器后会造成频率分布的变化。对于音频信号来说,频率分布直接影响信号重放时的音色和听感。通过对同一段音频素材不同滤波结果的考察,可以更加直观的理解滤波器的作用。
可以使用巴特沃斯滤波器来完成上述滤波功能。设计巴特沃斯数字低通滤波器可以使用如下语句:
[b,a]=butter(n,wc);
其中[b,a]是描述低通滤波器系统函数的两个行向量:即b表示系统函数分子多项式的系数,a表示分母多项式的系数;n为巴特沃斯滤波器的阶数,滤波器的阶数越大,过渡带越窄;wc为数字滤波器的归一化3dB截止频率(即信号幅度下降至处的频率),其数值在[0,1]之间,。
当wc=[w1,w2]时,是设计2n阶的带通滤波器,3dB通带为w1 < w < w2。
[b,a]=butter(n,wc,’ftype’);
用于设计截止频率为wc的巴特沃斯高通或带阻滤波器。当ftype=high时,为n阶高通滤波器;ftype=stop,wc=[w1,w2]时,为2n阶的带阻滤波器。
如果在这个函数输入变量的最后,加一个变量‘s’,比如:[b,a]=butter(n,wc,’s’)。表示设计的是模拟滤波器,详细的使用方法,可以用help butter阅读。
除了巴特沃思滤波器(butter),IIR滤波器还有切比雪夫I(cheby1)、切比雪夫II(cheby2)和椭圆滤波器(ellip),可以使用help学习他们的使用方法。
滤波功能可以使用filter函数实现:
c=filter(b,a,y);
其中,[b,a]对应所使用滤波器的系统函数的分子和分母多项式的系数,比如,上面设计巴特沃思滤波器所得到的系数[b,a]。y是需要被滤波的信号。c是滤波后的结果信号。
傅里叶变换可以使用fft函数实现。调用格式是
Y=fft(y,n);
其中,y是需要观测频谱的时域离散信号,n是变换点数,当y的点数小于n时,y后面补n-y个零。Y是变换得到的频谱。离散信号的频谱是周期的,周期为2pi。使用
函数fft得到的频谱范围是[0~2pi],当需要观看[-pi ~ pi]的频谱时,可以使用函数fftshift来转换实现。调用方法是:yy=fftshift(Y);
其中,Y是fft得到的[0~2pi]范围的频谱,yy是转换得到的[-pi ~ pi]的频谱。
音频文件的读取可以使用wavread函数实现,其调用方法为:
[y,Fs,bits]=wavread('filename');
其中,返回值y是音频数据,Fs为采样音频数据时使用的采样频率,bits为每个采样样本的比特数。
播放音频数据可以使用sound函数,调用方法为:
sound(y,Fs,bits); 注意采样频率Fs要设置正确,否则音乐会变调。
四、相关函