信号发生器数字信号处理课程设计报告.docx
《信号发生器数字信号处理课程设计报告.docx》由会员分享,可在线阅读,更多相关《信号发生器数字信号处理课程设计报告.docx(17页珍藏版)》请在冰点文库上搜索。
信号发生器数字信号处理课程设计报告
中南大学
数字信号处理课程设计报告
专业班级:
指导老师:
姓名:
学号:
目录
一、课程设计要求
二、设计过程
(1)设计题目
(2)设计源代码
(3)设计结果
(4)结果分析
三、设计总结与心得体会
四、课程设计指导书
一、课程设计要求
1、课程设计指导书
①《数字信号处理(第二版)》,丁玉美等,西安电子科技大学出版社;
②《MATLAB及在电子信息课程中的应用》,陈怀琛等,电子工业出版社。
2、课程设计题目
⑴、信号发生器
用户根据测试需要,可任选以下两种方式之一生成测试信号:
①、直接输入(或从文件读取)测试序列;
②、输入由多个不同频率正弦信号叠加组合而成的模拟信号公式(如式1-1所示)、采样频率(Hz)、采样点数,动态生成该信号的采样序列,作为测试信号。
⑵、频谱分析
使用FFT对产生的测试信号进行频谱分析并展示其幅频特性与相频特性,指定需要滤除的频带,通过选择滤波器类型(IIR/FIR),确定对应的滤波器(低通、高通)技术指标。
⑶、滤波器设计
根据以上技术指标(通带截止频率、通带最大衰减、阻带截止频率、阻带最小衰减),设计数字滤波器,生成相应的滤波器系数,并画出对应的滤波器幅频特性与相频特性。
①IIRDF设计:
可选择滤波器基型(巴特沃斯或切比雪夫型);
②FIRDF设计:
使用窗口法(可选择窗口类型,并比较分析基于不同窗口、不同阶数
所设计数字滤波器的特点)。
⑷、数字滤波
根据设计的滤波器系数,对测试信号进行数字滤波,展示滤波后信号的幅频特性与相频特性,分析是否满足滤波要求(对同一滤波要求,对比分析各类滤波器的差异)。
①IIRDF:
要求通过差分方程迭代实现滤波(未知初值置零处理);
②FIRDF:
要求通过快速卷积实现滤波(对于长序列,可以选择使用重叠相加或重叠
保留法进行卷积运算)。
⑸、选做内容
将一段语音作为测试信号,通过频谱展示和语音播放,对比分析滤波前后语音信号的变化,进一步加深对数字信号处理的理解。
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所示)、采样频率(Hz)、采样点数,动态生成该信号的采样序列,作为测试信号。
100sin(2πf1t)+100sin(2πf2t)+....+100sin(2πfnt)(1-1)
⑵、源代码
t=0:
1/20000:
0.01;
f1=2000,f2=5000,f3=8000;
ft=100*sin(2*pi*f1*t)+100*sin(2*pi*f2*t)+100*sin(2*pi*f3*t);
plot(t,ft);
gridon;
axis([00.011.1*min(ft)1.1*max(ft)]);
xlabel('t'),ylabel('ft');
⑶、结果
⑷分析
在给定的时域内,输入采样序列,生成了含有三个不同频率的混合信号波形。
第二题
⑴、频谱分析
使用FFT对产生的测试信号进行频谱分析并展示其幅频特性与相频特性,指定需要滤除的频带,通过选择滤波器类型(IIR/FIR),确定对应的滤波器(低通、高通)技术指标。
⑵、源代码
fs=20000;N=512;T=1/fs;
t=0:
1/fs:
0.01;
f1=2000,f2=5000,f3=8000;
ft=100*sin(2*pi*f1*t)+100*sin(2*pi*f2*t)+100*sin(2*pi*f3*t);
subplot(4,1,1);
plot(t,ft);gridon;
axis([00.011.1*min(ft)1.1*max(ft)]);
xlabel('t'),ylabel('ft');
title('抽样信号的连续形式');
subplot(4,1,2);
stem(t,ft);gridon;
axis([00.011.1*min(ft)1.1*max(ft)]);
xlabel('t'),ylabel('ft');
title('实际抽样信号');
k=0:
N-1;
Fw=fft(ft,N);
subplot(4,1,3);
plot(k,abs(Fw));gridon;
axis([0600010000]);
title('抽样信号幅度谱')
subplot(4,1,4);
plot(k,angle(Fw));gridon;
axis([0100-44]);
title('抽样信号相位谱')
⑶、结果
⑷分析
在抽样信号的幅度谱中发现了三个频率的幅度谱,需要进行滤波。
第三题
⑴、题目
滤波器设计
根据以上技术指标(通带截止频率、通带最大衰减、阻带截止频率、阻带最小衰减),设计数字滤波器,生成相应的滤波器系数,并画出对应的滤波器幅频特性与相频特性。
①IIRDF设计:
可选择滤波器基型(巴特沃斯或切比雪夫型);
②FIRDF设计:
使用窗口法(可选择窗口类型,并比较分析基于不同窗口、不同阶数
所设计数字滤波器的特点)。
⑵、源代码
%IIRDF设计:
%Step1:
产生含有3个正弦分量的信号
Fs=20000;t=(1:
100)/Fs;%抽样频率、时间轴
s1=100*sin(2*pi*t*2000);s2=100*sin(2*pi*t*5000);s3=sin(2*pi*t*8000);
s=s1+s2+s3;subplot(511);%组成信号、指定图形位置
plot(t,s);title('原始信号');
xlabel('时间(s)');ylabel('信号波形');
%Step2:
产生一个4阶IIR带通滤波器
%通带为100Hz到200Hz,并得出其幅频响应
[b,a]=ellip(2,0.5,20,[1000,2500]*2/Fs);%得到滤波器的系数矩阵
[H,w]=freqz(b,a,512);%H为滤波器的系统函数
subplot(512);plot(w*Fs/(2*pi),abs(H));
title('IIR带通滤波器幅频响应');
xlabel('频率(Hz)');ylabel('幅度');
axis([01000001.5]);
figure
%FIRDF设计:
As=70;
ws=0.2*pi;
wp=0.3*pi;
tr_width=wp-ws;
M=ceil((As-7.95)*2*pi/14.36./tr_width+1)+1;
disp(['滤波器的长度为',num2str(M)]);
beta=0.1102*(As-8.7);
n=[0:
1:
M-1];
disp(['线性相位斜率为',num2str(beta)])
delta_w=2*pi/1000;
w_kai=(kaiser(M,beta));%调用窗函数
wc=(ws+wp)/2;
r=(M-1)/2;
n=[0:
1:
(M-1)];
m=n-r+eps;
hd=sin(wc*m)./(pi*m);%求理想脉冲响应
h=hd.*w_kai';%加窗
stem(n,w_kai);
title('凯泽窗');
axis([0M-101.1]);
ylabel('w(n)');
⑶、结果
⑷、分析
以上分别为IIR和FIR滤波器的设计及其幅频特性和相频特性。
第四题
(1)题目
数字滤波
根据设计的滤波器系数,对测试信号进行数字滤波,展示滤波后信号的幅频特性与相频特性,分析是否满足滤波要求(对同一滤波要求,对比分析各类滤波器的差异)。
①IIRDF:
要求通过差分方程迭代实现滤波(未知初值置零处理);
②FIRDF:
要求通过快速卷积实现滤波(对于长序列,可以选择使用重叠相加或重叠
保留法进行卷积运算)。
(2)源代码
%IIRDF设计:
%Step1:
产生含有3个正弦分量的信号
Fs=20000;t=(1:
100)/Fs;%抽样频率、时间轴
s1=100*sin(2*pi*t*2000);s2=100*sin(2*pi*t*5000);s3=sin(2*pi*t*8000);
s=s1+s2+s3;subplot(511);%组成信号、指定图形位置
plot(t,s);title('原始信号');
xlabel('时间(s)');ylabel('信号波形');
%Step2:
产生一个4阶IIR带通滤波器
%通带为100Hz到200Hz,并得出其幅频响应
[b,a]=ellip(2,0.5,20,[1000,2500]*2/Fs);%得到滤波器的系数矩阵
[H,w]=freqz(b,a,512);%H为滤波器的系统函数
subplot(512);plot(w*Fs/(2*pi),abs(H));
title('IIR带通滤波器幅频响应');
xlabel('频率(Hz)');ylabel('幅度');
axis([01000001.5]);
%Step3:
对原始信号进行滤波
sf=filter(b,a,s);%用设计的滤波器过滤原始信号
subplot(513);plot(t,sf);
title('滤波后的信号波形');
xlabel('时间(s)');ylabel('信号波形');
axis([00.001-150150]);
%Step4:
绘出信号滤波前、后的幅频图
S=fft(s,512);%求出原始信号的傅立叶变换
SF=fft(sf,512);%求出过滤后信号的傅立叶变换
w=(0:
255)/256*(Fs/2);
subplot(514);
plot(w,abs([S(1:
256)',SF(1:
256)']));
title('滤波前、后的幅频图');
xlabel('频率(Hz)');
ylabel('幅度');grid;
legend({'滤波前的幅频','滤波后的幅频'})
subplot(515);
plot(w,angle([S(1:
256)',SF(1:
256)']));
title('滤波前、后的相频图');
xlabel('频率(Hz)');
ylabel('相位');grid;
legend({'滤波前的相频','滤波后的相频'})
figure
%FIRDF设计:
As=70;
ws=0.2*pi;
wp=0.3*pi;
tr_width=wp-ws;
M=ceil((As-7.95)*2*pi/14.36./tr_width+1)+1;
disp(['滤波器的长度为',num2str(M)]);
beta=0.1102*(As-8.7);
n=[0:
1:
M-1];
disp(['线性相位斜率为',num2str(beta)])
delta_w=2*pi/1000;
w_kai=(kaiser(M,beta));%调用窗函数
wc=(ws+wp)/2;
r=(M-1)/2;
n=[0:
1:
(M-1)];
m=n-r+eps;
hd=sin(wc*m)./(pi*m);%求理想脉冲响应
h=hd.*w_kai';%加窗
stem(n,w_kai);
title('凯泽窗');
axis([0M-101.1]);
ylabel('w(n)');
figure;
freqz(h,1);
fs=1000;
t=0:
1/20000:
2;
x=100*sin(2*pi*2000*t)+100*sin(2*pi*5000*t)+100*sin(2*pi*8000*t);
x1=filter(h,2,x);%对信号进行滤波
figure;
n=5000:
5100;
subplot(211);
t=n/fs;
plot(t,x(n));
title('原始信号');
subplot(212);
plot(t,x1(n));
title('滤波后的信号');
(3)结果
(4)分析
用双线性变换法设计无限脉冲响应数字滤波器(IIFDF)时,先把数字滤波器指标转换成模拟滤波器的指标,然后根据模拟滤波器的指标设计模拟滤波器,再经过线性变换把模拟滤波器转换成数字滤波器。
该系统要能够设计巴特沃兹型低通、带通、高通滤波器,并能够输入数字滤波器的性能指标,显示出滤波器的阶数和系数。
该系统的关键部分是滤波器的设计部分,按照双线性变换法设计滤波器的步骤进行设计即可。
三、设计总结与心得体会
在课程设计的这段时间,我获益匪浅。
不但进一步掌握了数字信号处理的基础知识及MATLAB的基本操作,还使我了解了信号的产生、采样及频谱分析的方法。
我进一步了解到凡事都需要耐心,细心仔细是成功的保证。
虽然在做的过程中遇到了一些问题,但是我都通过自己的努力解决了它们,证明了自己的能力。
这次课程设计对我各方面的综合能力有了很大的提高,对我以后的工作,实践都有很大的帮助。
在此次课程设计当中,我经常把C语言的语法知识照搬到MATALAB设计中,从而导致调试失败,所以下次用此类语言做课程设计时,应事先学习下这类语言的基本语法,以免与其他语言相混淆。
还有就是有些不定参数存在时,可先取定值,用于调试,这样可以节约调试时间,从而提高效率。
本次课程设计不但让我又学到了一些知识,而且也提高了我的综合能力。
使我在各个方面都得到了锻炼,以后有这样的机会一定会更加的很好利用,它不仅可以提高学习的针对性而且可以很好的锻炼动手能力以及自己的逻辑设计能力和处理问题的能力,希望在以后这方面的能力会很好的加强。
四、课程设计指导书
[1]《数字信号处理(第二版)》.丁玉美等西安电子科技大学出版社
[2]《数字信号处理及其MATLAB实现》,陈怀琛等译,电子工业出版社;
[3]《MATLAB及在电子信息课程中的应用》,陈怀琛等,电子工业出版社
忽略此处..