低通滤波器的设计

拟墨画扇 提交于 2019-12-26 11:21:20

(1)录制一段语音信号;

(2)给语音信号加高频噪声(此处的高频噪声频率

);

(3)设计低通滤波器;

(4)用设计的低通滤波器除去高频噪声。

代码如下:

clear all
clc
[x,Fs]=audioread('天.wav');
%sound(x,Fs)
X=fft(x);
T=1/Fs;                              %采样间隔
n=length(x);                         %采样点
K=0:n-1;
t=K*T;
f=K/n*Fs;                            %频域横坐标
figure,plot(f,abs(log(1+X)))
title('原信号频谱'),xlabel('f/Hz'),ylabel('幅度(取对数)')
f0=20000;                            %噪声频率
t=repmat(t',1,2);
x1=x+1.5*sin(2*pi*f0*t);                 %加噪声
%sound(x1,Fs)
X1=fft(x1);
figure,plot(f,abs(log(1+X1)))
title('带噪信号频谱'),xlabel('f/Hz'),ylabel('幅度(取对数)')
fp=1.15*10^4;                        %通带截止频率
fs=1.5*10^4;                         %阻带截止频率  
wp=2*pi*fp/Fs;
ws=2*pi*fs/Fs;
Rp=1;
As=30;
[N,wc]=buttord(wp,ws,Rp,As,'s');    %巴特沃斯滤波器
[B,A]=butter(N,wc,'s');
[Bz,Az]=bilinear(B,A,0.9);
[H,W]=freqz(Bz,Az);
figure,plot(W,abs(H));
title('低通滤波器幅频响应示意图');xlabel('f/10kHz'),ylabel('|H(e^j^w)|');
y=filter(Bz,Az,x1);                 %滤波
%sound(y,Fs)
Y=fft(y);
figure,plot(f,abs(log(1+Y)))
title('滤波后频谱'),xlabel('f/Hz'),ylabel('幅度(取对数)')

滤波后的结果如图4所示:

图1 原始语音信号频谱
图2 加入高频噪声后的语音信号频谱
图3 低通滤波器的幅频响应示意图
图4 经低通滤波器滤波后的信号频谱

        加入频率

的噪声后播放带噪信号,可听到有一段尖锐的声音掺杂在信号当中,经低通滤波器滤波后,尖锐的声音几乎完全消失,滤波后的信号与原始语音信号几乎完全相同。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!