数字信号处理课程设计报告.docx
《数字信号处理课程设计报告.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计报告.docx(45页珍藏版)》请在冰点文库上搜索。
数字信号处理课程设计报告
一、课程设计要求
二、设计过程
(1)设计题目
(2)设计源代码
(3)设计结果
(4)结果分析
三、设计总结与心得体会
四、课程设计指导书
一、课程设计要求
1、课程设计指导书
①《数字信号处理(第二版)》,丁玉美等,西安电子科技大学出版社;
②《MATLAB及在电子信息课程中的应用》,陈怀琛等,电子工业出版社。
2、课程设计内容:
语音信号去噪处理
主要要求:
1)在windows系统下的录音机录制一段1s左右的语音信号作为原声信号,在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数;
2)画出语音信号的时域波形,对采样后的语音进行fft变换,得到信号的频谱特性;对语音信号分别加入正弦噪声和白噪声,画出加噪信号的时域波形和频谱图;
3)根据对加噪语音信号谱分析结果,确定滤除噪声滤波器的技术指标,设计合适的数字滤波器,并画出滤波器的频域响应;
4)用所设计的滤波器对加噪的信号进行滤波,在同一个窗口画出滤波前后信号的时域图和频谱图,对滤波前后的信号进行对比,分析信号变化;
5)利用sound(x)回放语音信号,验证设计效果。
语音信号的延时和混响
主要要求:
1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样;
2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图;
3)将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较;
4)设计几种特殊类型的滤波器:
单回声滤波器,多重回声滤波器,全通结构的混响器,并画出滤波器的频域响应;
5)用自己设计的滤波器对采集的语音信号进行滤波;
6)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;
7)回放语音信号。
数字滤波器的设计及实现
主要要求:
1)调用信号产生函数mstg产生三路抑制载波调幅信号相加构成的复合信号st,观察st的时域波形和幅频特性曲线;
2)由要求将st中的三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率,要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB;
3)编程调用MATLAB滤波器设计函数分别设计这三个数字滤波器,并绘图显示其幅频特性曲线;
4)调用滤波函数filter,用所设计的三个滤波器分别对复合信号st进行滤波,分离出st中的三路不同载波频率的调幅信号,并绘图显示滤波后信号的时域波形和频谱,观察分离效果。
心电信号的处理
主要要求:
1)在MATLAB软件平台下,给原始的心电信号叠加上噪声或干扰,干扰类型分为如下几种:
白噪声、工频干扰(50Hz)、谐波干扰(二次、三次谐波为主,分别为100Hz、150Hz)绘出叠加噪声后的心电信号时域和频谱图,在视觉上与原始心电信号图形对比,分析频域基本特征变化。
2)给定滤波器的规一化性能指标(参考指标,实际中依据每个同学所叠加噪声情况而定),例如:
通带截止频率wp=0.25*pi,阻通带截止频率ws=0.3*pi;通带最大衰减Rp=1dB;阻带最小衰减Rs=15dB;
3)采用窗函数法设计各型FIR滤波器(低通、高通、带通、带阻中的至少2种类型),来对叠加干扰前后的心电信号进行滤波处理,绘出滤波器的频域响应及滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;在相同的性能指标下比较各方法的滤波效果,并从理论上进行分析或解释;
4)采用双线性变换法利用不同的原型低通滤波器(Butterworth型与切比雪夫I型)来设计各型IIR滤波器(低通、高通、带通、带阻中的至少2种类型)绘出滤波器的频域响应,并用这些数字滤波器对含噪心电信号分别进行滤波处理;比较不同方法下设计出来的数字滤波器的滤波效果,并从理论上进行分析或解释;
5)心电信号波形观察、频谱观察,对滤波后的心电信号观察其时域、频域特征变化。
3、具体要求
⑴、使用MATLAB(或其它开发工具)编程实现上述内容,写出课程设计报告。
⑵、课程设计报告的内容包括:
①课程设计题目和题目设计要求;
②设计思想和系统功能结构及功能说明;
③设计中关键部分的详细描述和介绍,采用流程图描述关键模块的设计思路;
④总结,包括设计过程中遇到的问题和解决方法,心得体会等;
⑤参考文献;
⑥程序源代码清单。
4、考核方式
课程考核分三部分,一部分是上机率,占20%;第二部分是检查成绩,最后两次上机为
检查时间,占50%;第三部分为课程设计报告,占30%。
注意:
⑴、使用GUI界面或混合编程实现仿真程序,酌情加分;
⑵、若发现程序或课程设计报告雷同,一律不及格。
⑶、主要参考资料
[1]S.K.Mitra.DigitalSignalProcessing:
AComputerBasedApproach,3rdEdition[M],NewYork,
USA:
McGraw-Hill,2000
[2]R.G.Lyons.UnderstandingDigitalSignalProcessing,2ndEdition[M].NewJersey,USA:
PrenticeHall,2005
[3]程佩青.数字信号处理教程,第二版[M].北京:
清华大学出版社,2001
[4]赵树杰等.数字信号处理[M].西安:
西安电子科技大学出版社,1997
[5]丁玉美等.数字信号处理—时域离散随机信号处理[M].西安:
西安电子科技大学出版社,
2002
[6]陈怀琛等.MATLAB及在电子信息课程中的应用[M],北京:
电子工业出版社出版,2002
⑷、课程设计进度安排
序号阶段内容合计(天)
一设计准备1
二方案选择及初步设计2
三目标项目设计实现及调试3
四撰写课程设计报告2
五上机检查成绩2
总计(2周)10
二.设计过程
第一题、语音信号去噪处理
1.设计要求:
(1)在windows系统下的录音机录制一段1s左右的语音信号作为原声信号,在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数;
(2)画出语音信号的时域波形,对采样后的语音进行fft变换,得到信号的频谱特性;对语音信号分别加入正弦噪声和白噪声,画出加噪信号的时域波形和频谱图;
(3)根据对加噪语音信号谱分析结果,确定滤除噪声滤波器的技术指标,设计合适的数字滤波器,并画出滤波器的频域响应;
(4)用所设计的滤波器对加噪的信号进行滤波,在同一个窗口画出滤波前后信号的时域图和频谱图,对滤波前后的信号进行对比,分析信号变化;
(5)利用sound(x)回放语音信号,验证设计效果。
2.设计步骤:
(1)找到7s的语音信号,利用函数wavread对语音信号进行信号读取;
(2)计算样本时刻和频谱图的频率,并进行N+1点FFT变换;
(3)加噪声为5000Hz的正弦信号正弦噪声,采用awgn函数加信噪比为10的高斯白噪声;
(4)设计滤波器;
(5)绘出相应的时域、频域图;
(6)利用sound函数进行原始信号的语音播放,加噪声音播放,以及滤波之后的语言播放。
3.设计实现:
(1)时域图与频谱图(加正弦)
录入原始信号的时域图:
加入正弦信号后的时域图:
滤波后的时域图:
录入原始信号的频域图:
加入正弦信号后的频率图:
滤波后的频域图:
采用巴斯低通滤波器滤除正弦波:
(2)具体代码实现:
[x,fs,bits]=wavread('E:
\mcpass.wav');%原信号
n=size(x,1);%提取采样信号的长度
t=(0:
length(x)-1)/fs;%计算样本时刻
f=fs*(0:
(n+1)/2-1)/n+1;%计算频域图的频率
X=fft(x,n+1);%进行N+1点FFT变换
ts=0:
1/fs:
(size(x)-1)/fs;%将所加噪声信号的点数调整到与原始信号相同
s=x+0.05*sin(2*pi*5000*ts)';%加噪声为5000Hz的正弦信号正弦噪声
S=fft(s,n+1);%加正弦噪声后的频域
%正弦滤波
wp=2000/fs*2*pi;%2000为通带截止频率
ws=3000/fs*2*pi;%3000为阻带下限截止频率
Rp=4;%通带波纹
Rs=25;%阻带波纹
T=1/fs;Fs=1/T;%定义采样间隔
Wp=2/T*tan(wp/2);%计算对应的数字频率
Ws=2/T*tan(ws/2);
[N,wn]=buttord(Wp,Ws,Rp,Rs,'s');%计算滤波器介数和截止频率
[c,d]=butter(N,wn,'s');%计算滤波器系统函数分子分母系数
[B,A]=bilinear(c,d,Fs);%双线性变换得到数字滤波器系统函数分子分母系数
[Hb,Wc]=freqz(B,A);
sf=filter(B,A,s);%对加噪信号进行滤波
Sf=fft(sf,n+1);%对滤波后进行N+1点FFT变换
%绘图部分
figure(3);
plot(fs*Wc/(2*pi),20*log10(abs(Hb)));title('巴斯低通滤波器频域响应图');
xlabel('频率(Hz)');
ylabel('幅度');
figure
(1);
subplot(3,1,1);
plot(t,x);title('原信号时域')
xlabel('时间(s)');
ylabel('幅度');
figure
(2);
subplot(3,1,1);
plot(f,abs(X(1:
(n+1)/2)));title('原信号频域')
xlabel('频率(Hz)');
ylabel('幅度');
figure
(1);
subplot(3,1,2);
plot(t,s);title('加正弦信号后的时域')
xlabel('时间(s)');
ylabel('幅度');
figure
(2);
subplot(3,1,2);
plot(f,abs(S(1:
(n+1)/2)));title('加正弦信号后的频域图')
xlabel('频率(Hz)');
ylabel('幅度');
figure
(1)
subplot(3,1,3);
plot(t,sf);title('滤波后的时域图');
xlabel('时间(s)');
ylabel('幅度');
figure
(2)
subplot(3,1,3);
plot(f,abs(Sf(1:
(n+1)/2)));title('滤波后的频域图');
xlabel('频率(Hz)');
ylabel('幅度');
sound(x);
sound(s);
sound(sf);
(3)时域图与频域图(加白噪声)
加白噪声后的时域图和滤除之后的时域图:
加白噪声和滤除之后的频域图:
采用blackman函数滤波:
具体代码实现:
[x,fs,bits]=wavread('E:
\hbsong.wav');
N=size(x,1);
t=(0:
length(x)-1)/fs;
f=fs*(0:
(N+1)/2-1)/N+1;
X=fft(x,N+1);
%加高斯白噪声
z=awgn(x,20);%对信号加信噪比为10的高斯白噪声
N1=size(z,1);%提取采样信号的长度
t=(0:
length(z)-1)/fs;%计算样本时刻
f=fs*(0:
(N1+1)/2-1)/N1+1;
Z=fft(z,N1+1);
Wp=2500/fs*2*pi;
Ws=3000/fs*2*pi;%计算对应的数字频率
B=Ws-Wp;
n=ceil(1*pi/B);
wc=(Wp+Ws)/2;
b=fir1(n-1,wc/pi,'stop',blackman(n));%blackman窗函数滤波
[H,w]=freqz(b,1);
y=fftfilt(b,z);
t1=(0:
length(y)-1)/fs;
Y=fft(y,N1+1);
subplot(2,2,1);
plot(t,z);title('加高斯白噪声后时域图');
subplot(2,2,2);
plot(f,abs(Z(1:
(N1+1)/2)));title('滤波前信号频谱图')
figure
plot(fs*w/(2*pi),20*log10);title('blackman函数频域响应图');
title('频率响应')
xlabel('频率(Hz)');
ylabel('幅度');
subplot(2,2,3);
plot(t1,y)
title('滤波后信号时域图');
xlabel('时间(s)');
ylabel('幅度');
subplot(2,2,4);
plot(f,abs(Y(1:
(N1+1)/2)));
title('滤波后信号频谱图')
xlabel('频率(Hz)');
ylabel('幅度');
sound(y,fs)
第二题、语音信号的延时和混响
1.设计要求:
(1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样;
(2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图;
将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较;
(3)设计几种特殊类型的滤波器:
单回声滤波器,多重回声滤波器,全通结构的混响器,并画出滤波器的频域响应;
(4)用自己设计的滤波器对采集的语音信号进行滤波;
(5)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;
(6)回放语音信号。
2.设计步骤:
(1)录入原始声音信号;
(2)计算样本时刻和频谱图的频率,并进行N+1点FFT变换;
(3)加入单回声;
(4)设计单回声滤波器幅频响应函数;
(5)绘出相应时域与频域图;
(6)利用sound函数进行原始信号的语音播放,加单回声后语言播放,以及滤除之后的语言播放;
3.设计实现:
(1)时域图和频域图(加单回声)
原始信号时域图:
滤波后的时域图:
原始信号频域图:
滤波后频域图:
单回声滤波器幅频响应:
(2)具体代码实现(单回声):
[x,fs,bits]=wavread('E:
\mcpass.wav');%原声音信号
n=size(x,1);
t=(0:
length(x)-1)/fs;
f=fs*(0:
(n+1)/2-1)/n+1;
X=fft(x,n+1);
a=0.6;%单回声滤波
R=fs*a;
B=[1,zeros(1,R-2),a];
A=[1,zeros(1,R-1)];
y=filter(B,A,x);
Y=fft(y,n+1);
[H,W]=freqz(B,A);%求单回声滤波器幅频响应函数
%绘图部分
figure
(2);
plot(fs*W/(2*pi),20*log10(abs(H)));title('频率响应');
xlabel('频率(Hz)');
ylabel('幅度');
figure
(1);
subplot(4,1,1);
plot(t,x);title('原信号时域');
xlabel('时间(s)');
ylabel('幅度');
subplot(4,1,2);
plot(f,abs(X(1:
(n+1)/2)));title('原信号频域');
xlabel('频率(Hz)');
ylabel('幅度');
figure
(1);
subplot(4,1,3);
plot(t,y);title('滤波后时域图');
xlabel('时间(s)');
ylabel('幅度');
figure
(1);
subplot(4,1,4);
plot(f,abs(Y(1:
(n+1)/2)));title('滤波后频域图');
xlabel('频率(Hz)');
ylabel('幅度');
sound(x,fs,bits);
sound(y,fs,bits);
(3)时域图与频域图(多重回声)
原始信号时域图与多重信号时域图:
原始信号时域图与多重信号频域图:
多重回声滤波器幅频响应:
(4)具体代码实现(多回声)
%原声音信号
[x,fs,bits]=wavread('E:
\mcpass.wav');
N=size(x,1);
t=(0:
length(x)-1)/fs;
f=fs*(0:
(N+1)/2-1)/N+1;
%多重回声
a=0.5;
R=fs*a;
B=[1,zeros(1,R-2)];
A=[1,zeros(1,R-1),a];
yd=filter(B,A,x);%滤波器函数
%频率响应
[Hb,Wc]=freqz(B,A);%求多重回声滤波器幅频响应函数
%绘图部分
figure
(2);
plot(fs*Wc/(2*pi),20*log10(abs(Hb)));title('多重滤波器频域响应图')
xlabel('频率(Hz)');
ylabel('幅度');
figure
(1);
subplot(4,1,1);
plot(t,x);title('原信号时域');
xlabel('时间(s)');
ylabel('幅度');
X=fft(x,N+1);
subplot(4,1,3);
plot(f,abs(X(1:
(N+1)/2)));title('原信号频域');
xlabel('频率(Hz)');
ylabel('幅度');
figure
(1);
subplot(4,1,2);
plot(t,yd);title('多重信号时域图')
xlabel('时间(s)');
ylabel('幅度');
Yd=fft(yd,N+1);%多重回声滤波后信号FFT变换
subplot(4,1,4);
plot(f,abs(Yd(1:
(N+1)/2)));title('多重信号频域图');
xlabel('频率(Hz)');
ylabel('幅度');
sound(x);
sound(yd);
(5)时域图与频域图(全通滤波器)
原始信号时域图与全通滤波器时域图:
原始信号时域图与全通滤波器频域图:
全通滤波器的频域响应图:
(6)具体代码实现(全通滤波器):
%原声音信号
[x,fs,bits]=wavread('E:
\mcpass.wav');
N=size(x,1);
t=(0:
length(x)-1)/fs;
f=fs*(0:
(N+1)/2-1)/N+1;
%全通结构混响
a=0.5;
R=fs*a;
B=[a,zeros(1,R-2),1];
A=[1,zeros(1,R-2),a];
yd=filter(B,A,x);
%频率响应
[Hb,Wc]=freqz(B,A);%求全通滤波器幅频响应函数
figure
(2);
plot(fs*Wc/(2*pi),20*log10(abs(Hb)));title('全通结构频域响应图')
xlabel('频率(Hz)');
ylabel('幅度');
figure
(1);
subplot(4,1,1);
plot(t,x);title('原信号时域');
xlabel('时间(s)');
ylabel('幅度');
X=fft(x,N+1);
subplot(4,1,3);
plot(f,abs(X(1:
(N+1)/2)));title('原信号频域');
xlabel('频率(Hz)');
ylabel('幅度');
figure
(1);
subplot(4,1,2);
plot(t,yd);title('全通滤波器时域图');
xlabel('时间(s)');
ylabel('幅度');
Yd=fft(yd,N+1);
subplot(4,1,4);
plot(f,abs(Yd(1:
(N+1)/2)));title('全通滤波器频域图');
xlabel('频率(Hz)');
ylabel('幅度');
sound(x);
sound(yd);
(7)时域图与频域图(延时与混响)
原始信号时域图:
延时时域图:
混响时域图:
原始信号频域:
延时信号频域图:
混响信号频域图:
(8)具体代码实现(延时与混响):
[x,fs,bits]=wavread('E:
\mcpass.wav');
N=size(x,1);
t=(0:
length(x)-1)/fs;
f=fs*(0:
(N+1)/2-1)/N+1;
xd=[zeros(300,1);x];%信号延时
td=(0:
length(xd)-1)/fs;
Xd=fft(xd);
Xd1=fftshift(Xd);
dFs=fs/length(xd);
xd1=[x;zeros(300,1)];%信号混响
x1=xd1+xd;
Xhun=fft(x1);%混响信号fft变换
Xh2=fftshift(x1);%平移,中心为0频率
dFs=fs/length(x1);
%绘图部分
figure
(1);
subplot(4,1,1);
plot(t,x);title('原信号时域');
xlabel('时间(s)');
ylabel('幅度');
X=fft(x,N+1);
subplot(4,1,2);
plot(f,abs(X(1:
(N+1)/2)));title('原信号频域');
xlabel('频率(Hz)');
ylabel('幅度');
subplot(4,1,3);
plot(td,xd);title('延时信号时域图')
xlabel('时间(s)');
ylabel('幅度');
subplot(4,1,4);
plot([-fs/2:
dFs:
fs/2-dFs],abs(Xd));title('延时信号频域图')
xlabel('频率(Hz)');
ylabel('幅度');
figure
(2);
subplot(2,1,1);
plot(td,x1);title('混响信号时域图');
xlabel('时间(s)');
ylabel('幅度');
figure
(2);
subplot(2,1,2);
plot([-fs/2:
dFs:
fs/2-dFs],abs(Xh2));title('混响信号频域图');
xlabel('频率(Hz)');
ylabel('幅度');
sound(x);
sound(xd);
sound(x1);
第三题、数字滤波器的设计及实现
1.设计要求:
(1)调用信号产生函数mst