h(n+1) = (sin(pi*(n-M)) - sin(wH1*(n-M)) + sin(wL1*(n-M)) - sin(wH2*(n-M))
+ sin(wL2*(n-M)) - sin(wH3*(n-M)) + sin(wL3*(n-M)))/(pi*(n-M));
end end
利用plot(h)语句观察所构建滤波器的时域波形如下:
3.6 滤波器频域分析
滤波器的幅频响应表示系统的功能,即表示不同频谱成分的信号在该系统中的衰减程度,相频响应表示信号通过系统时,不同频谱成分的延时情况。相性相位条件下群延时的特点是群延时为常数,其作用是使系统通带内无失真传输的必要条件。
利用freqz(h)语句观察滤波器h(n)的幅频特性与相频特:
通过图形可以看出,该滤波器有三个阻带,且为线性相位(相频响应为一条直线)。
3.7 对信号滤波去噪
利用conv()函数对x与h进行时域卷积,所得结果y_temp即为滤波后的信号。但这样会增加信号的长度,由卷积的运算过程可知,其中信号的头部与尾部是无用信息,因此需要把这部分无用信息去除掉,可以利用如下语句实现:
y_temp = conv(h,xdeal);
t = (N-1)/2; %N为滤波器的阶数 y = y_temp((t+1):(x_len+t)); 3.8 去噪后音频的存盘
利用如下语句进行声音信号的读入:
[z,fs,nbits] = wavwrite(‘D:\\...\\...\\result3.wav’); 其中z为带存盘数据,fs为采样速率,nbits为数据z的位宽。
3.9 噪音区间的定位 (1)相关运算:
相关运算的过程相当于将处理过程中的一函数g经平移后,对另一函数f进行扫描;反应的是两函数在不同偏移量下的相似程度,相似程度的大小由它们的互相关函数值来衡量,在两函数相似程度最大的地方相关函数值最大。
相关系数的计算:
X为模板信号的幅度,Y是待测信号的幅度。
将上述相关系数计算公式编写成一个m文件,供主程序调用。 function coeff = correlation_ratio_calculation(X ,Y)
fenzi = sum(X .* Y) - (sum(X) * sum(Y)) / length(Y);
fenmu = sqrt((sum(X .^2) - sum(X)^2 / length(Y)) * (sum(Y .^2) - sum(Y)^2 /
length(Y)));
coeff = fenzi / fenmu;
end
(2) 正弦、余弦模板函数的制作 N1 = 100; y1 = zeros(1,N1); y2 = zeros(1,N1);
f1 = 3500; %待检测噪音的频率 for i=1:1:N1
y1(i) = sin(2*pi*i*f1/fs); %频率为f1=3500的正弦信号模板 y2(i) = cos(2*pi*i*f1/fs); %频率为f1=3500的余弦信号模板 end figure(5); subplot(2,1,1); plot(y1);
title('正弦信号模板'); subplot(2,1,2); plot(y2);
title('余弦信号模板'); 模板图形如下:
(3) 噪音的定位函数
%%%%利用相关系数定位噪音出现的时间段 ysin = zeros(1,x_len-N1); ycos = zeros(1,x_len-N1); rt = zeros(1,x_len-N1); for i=1:1:(x_len-N1) xt=xdeal(i:(N1+i-1));
ysin(i) = correlation_ratio_calculation(xt,y1); ycos(i) = correlation_ratio_calculation(xt,y2); rt(i) = abs(ysin(i))+abs(ycos(i)); end figure(6); plot(rt);
title('正弦余弦互补合成的相关系数');
figure(7); subplot(2,1,1); plot(ysin);
title('正弦模板相关系数'); subplot(2,1,2); plot(ycos);
title('余弦模板相关系数'); 噪声f1的定位:
有图像知,频率为f1 = 3500Hz的噪音出现的区间为[9900,196400].
噪音f2的定位:
有图像知,频率为f2 = 4600Hz的噪音出现的区间为[60000,196500].
噪音f3的定位:
有图像知,频率为f3 = 5500Hz的噪音出现的区间为[80000,196000].
4.实验结果与分析
用音乐播放器打开处理后的声音,可以听到噪音在一定程度上得到了抑制,能听出有用信息。但是与原始声音相比,效果还差很多。在同一幅图片中绘制夹杂噪音的信号与原始信号的频谱图:
对比两幅图可知,与原始信号相比噪音信号中除了3个正弦噪音外,还夹杂了许多其他频率的干扰,而所设计的滤波器只对3个正弦噪音做了处理,却没有处理其他干扰,这可能是滤波效果不太理想的一个重要原因。
5.总结与体会
通过这次课程设计,我不仅对matlab软件有了进一步的熟悉,更重要的是学会了如何对信号进行频域分析来找出信号中夹杂的噪音,以及如何设计滤波器来滤除噪音。还有如何利用相关算法来定位噪音在信号中出现的区间,体会到了学习《数字信号处理》重在应用与实践。
参考文献
1. 《数字信号处理》 程佩青著 清华大学出版社
2. 《MATLAB程序设计与应用基础教程》 张岳著 清华大学出版社