《吹管音乐滤波去噪——使用TUKEYWIN设计的FIR滤波器》 第5页 共17页
w =tukeywin(M)在数组w中产生M点的Tukeywin窗函数。
由上面查表可知:Tukeywin窗的滤波器的过渡带宽为2.4π/M,最小阻带衰减22db。 利用wvtool可绘制出Tukeywin窗函数波形如下: N=128; t=tukeywin(N); wvtool(t);
图2-2 Tukeywin窗函数波形
3 设计步骤
3.1 设计流程图
根据设计的要求,首先从网上下载一段音乐信号,对音乐信号加入噪声干扰,再利用Tukeywin窗设计合理的FIR滤波器。最后用滤波器对干扰后的音乐信号进行滤波去噪。具体设计流程图如下图3.1所示:
《吹管音乐滤波去噪——使用TUKEYWIN设计的FIR滤波器》 第6页 共17页 开始 下载一段吹管音乐信号,命名为“meilideshenhua.wav,绘 ”制出其时域波形和频谱图。 加入噪声干扰,绘制干扰 后的时域波形和频谱图。 利用Tukeywin窗设计合理 的FIR滤波器。 将干扰后的音乐信号通过自己设计的滤波器,进行滤波去噪。 比较滤波前后的时域波形和频谱 图,并回放音乐信号,验证是否 达到去噪效果。 NO 是否达到去噪 效果?
YES 结束 图3-1 音乐信号滤波去噪流程图
3.2 录制语音信号
在网上下载一段mp3音乐,再利用视频转换器将其转换成.wav格式,且为单声道,再将此.wav格式音乐控制在3秒内,以减少设计中的误差。然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数,采集完成后在信号中加入一个单频噪声,绘制原音乐信号和加噪后的音乐信号的时域和频域的波形图。
具体调用如下:
《吹管音乐滤波去噪——使用TUKEYWIN设计的FIR滤波器》 第7页 共17页
[x,fs,bits]=wavread('g:\\数字信号\\meilideshenhua.wav'); % 输入参数为文件的全路径和文件名,输出的第一个参数是每个样本的值,fs是生成该波形文件时的采样率,bits是波形文件每样本的编码位数。
sound(x,fs,bits); % 按指定的采样率和每样本编码位数回放 N=length(x); % 计算信号x的长度
fn=2100; % 单频噪声频率,此参数可改 t=0:1/fs:(N-1)/fs; % 计算时间范围,样本数除以采样频率 x=x(:,1)'; y=x+0.1*sin(fn*2*pi*t);
sound(y,fs,bits); % 应该可以明显听出有尖锐的单频啸叫声
X=abs(fft(x));Y=abs(fft(y)); % 对原始信号和加噪信号进行fft变换,取幅度谱 X=X(1:N/2); Y=Y(1:N/2);% 截取前半部分 deltaf=fs/N; % 计算频谱的谱线间隔 f=0:deltaf:fs/2-deltaf; % 计算频谱频率范围 得到的波形图如图3.2所示:
图3-2 原始音乐信号与加噪后的音乐信号时域、频域波形图
《吹管音乐滤波去噪——使用TUKEYWIN设计的FIR滤波器》 第8页 共17页
3.3 滤波器设计
在此用窗函数法设计一个带阻的FIR滤波器。 此处给出各滤波器的性能指标:
fp1?2000Hzfs2?2150Hzfs1?2050Hzfp2?2200Hz,As=20dB,Ap=1 dB,其截止频率在单频噪声干扰
附近。再进行加窗设计,利用Matlab中的函数freqz画出各滤波器的频率响应。
具体调用如下:
fpd=2000;fsd=2050;fsu=2150;fpu=2200;Rp=1;As=20; % 带阻滤波器设计指标 fcd=(fpd+fsd)/2;fcu=(fpu+fsu)/2;df=min((fsd-fpd),(fpu-fsu)); % 计算上下边带中心频率,和频率间隔
wcd=fcd/fs*2*pi;wcu=fcu/fs*2*pi;dw=df/fs*2*pi; % 将Hz为单位的模拟频率换算为rad为单位的数字频率 wsd=fsd/fs*2*pi;wsu=fsu/fs*2*pi;
M=ceil(2.4*pi/dw)+1; % 计算TUKEYWIN窗设计该滤波器时需要的阶数 n=0:M-1; % 定义时间范围
w_tuk=tukeywin(M); % 产生M阶的TUKEYWIN窗
hd_bs=ideal_lp(wcd,M)+ideal_lp(pi,M)-ideal_lp(wcu,M); % 调用自编函数计算理想带阻滤波器的脉冲响应
h_bs=w_tuk'.*hd_bs; % 用窗口法计算实际滤波器脉冲响应
[db,mag,pha,grd,w]=freqz_m(h_bs,1); % 调用自编函数计算滤波器的频率特性 得到的波形图如图3.3所示:
相关推荐: