低通滤波器的设计

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

(2)给语音信号加高频噪声(此处的高频噪声频率f_0=20000Hz);

(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 经低通滤波器滤波后的信号频谱

        加入频率f_0=20000Hz的噪声后播放带噪信号,可听到有一段尖锐的声音掺杂在信号当中,经低通滤波器滤波后,尖锐的声音几乎完全消失,滤波后的信号与原始语音信号几乎完全相同。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值