电子科技大学-2014数字信号处理课程设计Word文档下载推荐.docx
- 文档编号:13033251
- 上传时间:2022-10-03
- 格式:DOCX
- 页数:8
- 大小:133.97KB
电子科技大学-2014数字信号处理课程设计Word文档下载推荐.docx
《电子科技大学-2014数字信号处理课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《电子科技大学-2014数字信号处理课程设计Word文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。
1)读入一段音频后添加噪声,必须包括两种不同的噪声,信噪比:
0dB~10dB;
2)分别采用滑动平均滤波器,直接频域滤波,以及谱分析后设计滤波器滤波三种方法实现,并对比效果。
3)给出各种方案的设计依据、代码、频响曲线,以及输入输出对比图。
1)读入音频并添加噪声
因为我使用的版本是matlab2014,所以很多函数可能跟老师讲的和旧版的DSP书不太一样,不过可以在2012及其以上的版本运行(我都试过)。
我们选择一个时长较短的音频(梁静茹的loveiseverything)使用函数audioread读入。
使用awgn在信号中插入高斯白噪声。
同时,为了让效果明显应让信噪比尽量大一点,故使用信噪比为8DB和9DB的两种噪声。
相关代码:
%读入语音信号
[sound,fs]=audioread('
music.wav'
);
[sound,fs]=audioread('
%playsong;
song=audioplayer(y,Fs);
play(song);
N=length(sound);
df=fs/N;
n=1:
N/2;
fx=df*(n-1);
sound1=awgn(sound,8,'
measured'
noise=awgn(sound1,9,'
audiowrite('
noise.wav'
noise,fs);
%addtwonoises;
%playnoise;
%noisysong=audioplayer(noise,fs);
%play(noisysong);
fy=fft(noise);
soundfft=fft(sound);
figure
(1);
subplot(2,1,1),plot(fx,abs(soundfft(n))),title('
原始音频的频域图像'
),xlabel('
频率(Hz)'
),ylabel('
幅度'
subplot(2,1,2),plot(fx,abs(fy(n))),title('
加噪后音频的频域图像'
频率(Hz)'
幅度'
下图为原始音频与加噪后的声音音频的频域图像对比:
原始音频的频域图像
10000
度 5000
幅
0 1000 2000 3000 4000 5000 6000 7000 8000
频率(Hz)
加噪后音频的频域图像
00 1000 2000 3000 4000 5000 6000 7000 8000
2)滑动滤波器设计
从教材上我们可以知道滑动平均滤波器的表达式
y[n]
M-1x[n
l0
l]/M经过多次试
验发现三阶滑动平均滤波器在此效果最好故我们使用三阶滑动平均滤波器。
%moving-averagefilter
movingnoise=zeros(length(noise)-2,1);
fori=3:
N,
movingnoise(i-2)=(noise(i)+noise(i-1)+noise(i-2))/3;
end
noisey=fft(movingnoise);
n1=1:
length(movingnoise)/2;
noisex=n1*(fs/length(movingnoise));
figure
(2),
subplot(2,1,1),plot(fx,abs(fy(n))),title('
噪声音频的频域图像'
subplot(2,1,2),plot(noisex,abs(noisey(n1))),title('
三阶滑动平均后音频的频域图像'
%playthenoisysongaftermoving-averagefilter
%dnoisysong=audioplayer(dnoise);
%play(dnoisysong);
经过三阶滑动滤波器之后的输入输出对比图:
噪声音频的频域图像
三阶滑动平均后音频的频域图像
3)直接频域滤波
直接频域滤波即是使用理想低通滤波器,我们将截止频率设定为4000HZ,用在频域矩阵上直接取0的方法实现。
再通过IFFT反变换得到时域。
%directlyfilter
directffty=zeros(size(fy));
fori=1:
length(noise),
if(fx(i)<
4000),directffty(i)=fy(i);
else
break;
end
endfigure(3),
噪声音频的频域图像'
subplot(2,1,2),plot(fx,abs(directffty(n))),title('
直接频域滤波后音频的频域图像'
%playthenoisysongafterdirectlyfilted
%directy=ifft(directffty);
%audiodirecty=audioplayer(directy,fs);
%play(audiodirecty);
使用直接频域滤波后音频频域的输入输出对比图:
直接频域滤波后音频的频域图像
4)谱分析后设计滤波器滤波
我们使用MATLAB工具fdatool来设计滤波器。
框图如下:
用FDATOOL设计的滤波器得到的参数在代码开始,10阶的KAISER滤波器,FS=16000,FC=4000;
%designafirwindowfilterusingfdatool
Num=[-0.0298
-0.0349
0.0418
0.0516
-0.0669
-0.0943
0.1579
0.4746
-0.0298]'
;
a=1;
filtednoise=filter(Num,a,noise);
fftfilt=fft(filtednoise);
figure(4),
subplot(2,1,2),plot(fx,abs(fftfilt(n))),title('
构造滤波器滤波后音频的频域图像'
%playtheaudioafterfirwindow
%filtaudio=audioplayer(filtednoise,fs);
%play(filtaudio)
使用构造滤波器滤波后的音频频域对比图:
构造滤波器滤波后音频的频域图像
总结:
我们可以通过函数audioplay()生成播放对象再使用play()来播放滤波后的信号从听觉上进行对比。
(R2014A)
1.加入噪声后的音频播放起来会明显听到噪音。
2.滑动平均滤波器对于整个频域上的噪声都有过滤作用,但是若阶数过高容易使信号失真。
3.直接频域滤波能够使截止频率以上的噪声频率完美过滤,但是对截止频率以下的噪声频率无能为力,并且在实际中难以实现。
4.FDATOOL设计滤波器滤波与直接频域滤波有同样的缺点,但是是实际能够实现的,工程可用的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子科技大学 2014 数字信号 处理 课程设计