【滤波器设计】FIR滤波器和IIR滤波器的高通、低通、带通滤波器的设计,以及频率响应附Matlab代码和报告

发布于:2022-11-28 ⋅ 阅读:(520) ⋅ 点赞:(0)

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机

⛄ 内容介绍

一、设计题目

应用Matlab对语音信号进行频谱分析及滤波。

二、设计目的

数字信号处理是一门以算法为核心,理论和实践性较强的学科。是电子信息工程、通信工程专业、电子信息科学与技术专业的一门重要的专业技术基础课。数字信号处理课程是在学习完数字信号处理的相关理论后,进行的综合性训练课程,其目的是:使学生进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;增强学生应用Matlab语言编写数字信号处理的应用程序及分析、解决实际问题的能力。

三、设计内容

1语音信号的采集

利用Windows下的录音机,录制一段自己的话音,时间在1 s内。然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。通过wavread函数的使用,学生很快理解了采样频率、采样位数等概念。

2语音信号的频谱分析

首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深学生对频谱特性的理解。

3设计数字滤波器和画出其频率响应

给出各滤波器的性能指标:

(1)低通滤波器性能指标fb=1 000 Hz,fc=1 200 Hz,As=100 dB,Ap=1 dB。

(2)高通滤波器性能指标fc=4 800 Hz,fb=5 000 Hz As=100 dB,Ap=1 dB。

(3)带通滤波器性能指标fb1=1 200 Hz,fb2=3 000 Hz,fc1=1 000 Hz,fc2=3 200 Hz,As=100 dB,Ap=1 dB。

用窗函数法和双线性变换法设计上面要求的3种滤波器。在Matlab中,可以利用函数fir1设计FIR滤波器,可以利用函数butte,cheby1和ellip设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应。

4用滤波器对信号进行滤波

用自己设计的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。

5比较滤波前后语音信号的波形及频谱

在一个窗口同时画出滤波前后的波形及频谱。

6回放语音信号

在Matlab中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音有变化。

7设计系统界面

为了使编制的程序操作方便,要求设计处理系统的用户界面。在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。

⛄ 部分代码

fb=1000;fc=1200;As=100;Ap=1;fs=22050;

[x1,Fs]=audioread('D:\matlab\sound.wav');

wc=2*pi*fc/fs;                         %通带截止频率

wn=2*pi*(fc-fb)/fs;                    %过渡带宽

N=ceil((As-7.95)/(2.286*wn));          %所需滤波器的长度

beta=0.1102*(As-8.7);                  %β的求值

Win=kaiser(N+1,beta);                  %使用kaise窗设计低通滤波器

b=fir1(N,wc/pi,'low',Win);

freqz(b,1,512);

title('FIR低通滤波器');

f2=filter(b,1,x1);

figure(2)

subplot(2,1,1)

plot(x1)

title('FIR低通滤波器滤波前的时域波形');

subplot(2,1,2)

plot(f2);

title('FIR低通滤波器滤波后的时域波形');

sound(f2,44100);                    %播放滤波后的语音信号

F0=fft(f2,1024);

f=fs*(0:511)/1024;

figure(3)

y2=fft(x1,1024);

subplot(2,1,1);

plot(f,abs(y2(1:512)));

title('FIR低通滤波器滤波前的频谱')

xlabel('频率/Hz');

ylabel('幅值');

subplot(2,1,2)

F2=plot(f,abs(F0(1:512)));

title('FIR低通滤波器滤波后的频谱')

xlabel('频率/Hz');

ylabel('幅值');

⛄ 运行结果

⛄ 参考文献

1、程佩青.数字信号处理教程. 北京:清华大学出版社出版,2001

2、MATLAB与科学设计 电子工业出版社

3、数字信号处理——使用matlab 西安交通大学出版社

4、数字信号处理基础及MATLAB实现 中国林业出版社

5、Matlab信号处理与应用 电子工业出版社

6、基于MATLAB的系统分析与设计 西安电子科技大学出版社

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到