数字信号处理课程设计本科论文.docx
《数字信号处理课程设计本科论文.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计本科论文.docx(33页珍藏版)》请在冰豆网上搜索。
![数字信号处理课程设计本科论文.docx](https://file1.bdocx.com/fileroot1/2023-2/17/5cb97a0e-2090-49e4-aec4-ee597d61b368/5cb97a0e-2090-49e4-aec4-ee597d61b3681.gif)
数字信号处理课程设计本科论文
数字信号处理课程设计
目录
一、课程设计题目1
二、题目设计要求2
三、设计思想及步骤2
3.1Gaussian序列频域变换2
●3.1.1设计内容2
●3.2.2设计思想3
●3.2.3设计步骤3
●3.3.4设计结果3
3.2对周期方波信号进行滤波6
●3.2.1设计内容6
●3.2.2设计思想6
●3.2.3设计步骤7
●3.2.4设计结果7
3.3对语音信号实现回声处理11
●3.3.1设计内容11
●3.3.2设计思想11
●3.3.3设计步骤11
●3.3.4设计结果11
四、结果分析14
4.1.Gaussian序列频域变换分析14
4.2.对周期方波信号进行滤波14
4.3.对语音信号实现回声处理14
五、总结15
六、附录16
6.1参考书目16
6.2源程序17
一、课程设计题目
课程设计选题一:
1.已知Gaussian序列
1)固定信号xa(n)中参数p=8,改变q的值,使q分别等于2,4,8,观察它们的时域和幅频特性,了解当q取不同值时,对信号序列的时域、幅频特性的影响;固定q=8,改变p,使p分别等于8,12,14,观察参数p变化对信号序列的时域及幅频特性的影响,观察p等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?
记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。
2)设有序列
试实现xa(n)(p=8,q=2)和xb(n)的时域线性卷积
3)用FFT分别实现xa(n)(p=8,q=2)和xb(n)的线性卷积和50点的圆周卷积。
2.对周期方波信号进行滤波
1)生成一个基频为10Hz的周期方波信号。
2)选择适当的DFT参数,对其进行DFT,分析其频谱特性,并绘出相应曲线。
3)设计多个滤波器,分别滤除该周期信号中30Hz、40Hz、50Hz以后的频率分量,观察滤波前后信号的时域和频域波形变化
4)如果该信号淹没在噪声中,试滤除噪声信号
3.1)获取一段音乐或语音信号,设计单回声滤波器,实现信号的单回声产生。
给出单回声滤波器的单位脉冲响应及幅频特性,给出加入单回声前后的信号频谱。
2)设计多重回声滤波器,实现多重回声效果。
给出多回声滤波器的单位脉冲响应及幅频特性,给出加入多重回声后的信号频谱。
3)设计多段均衡器,使得不同频率的混合音频信号,通过一个均衡器后,增强或削减某些频率分量
二、题目设计要求
1、使用MATLAB(或其它开发工具)编程实现上述内容,写出课程设计报告。
滤波器设计题目应尽量避免使用现成的工具箱函数。
为便于分析与观察,设计中所有频谱显示中模拟频率应以实际频率显示,数字频率应对归一化。
2、课程设计报告的内容包括:
课程设计题目和题目设计要求;
设计思想和系统功能分析;
设计中关键部分的理论分析与计算,参数设置,关键模块的设计思路;
(4)测试数据、测试输出结果,及必要的理论分析和比较
总结,包括设计过程中遇到的问题和解决方法,设计心得与体会等;
参考文献;
程序源代码清单。
3、演示系统使用GUI界面或混合编程实现集成打包发布。
三、设计思想及步骤
3.1Gaussian序列频域变换
●3.1.1设计内容
●3.2.2设计思想
信号的频谱分析就是利用傅里叶分析的方法,求出与时域描述相对应的频域描述,从中找出信号频谱的变化规律,其重点是阐述频谱分析过程中可能存在的误差。
可能存在的误差有:
混叠现象
对连续信号进行频谱分析时,先要对信号进行采样,理论上要求采样频率fs必须大于两倍信号的最高频率。
在满足采样定理条件下,采样序列的数字频谱能准确反映连续信号的模拟频谱,否则会发生频谱混叠现象。
严格地讲,实际信号的持续时间有限、频谱无限,为了尽可能减少频谱混叠,信号在采样之前一般都要进行预滤波处理。
截断效应
(1)频谱泄漏
原序列经截断后,频谱会向两边展宽,通常称这种展宽为泄漏。
频谱泄漏使频谱变模糊,分辨率变差,泄漏程度和窗函数幅度谱主瓣宽度有关。
窗型一定,窗口越长,主瓣越窄,频谱泄漏越小。
窗口长度一定,矩形窗主瓣最窄,频谱泄漏最小,但其旁瓣的幅度最大。
(2)谱间干扰
对原序列截断,频谱不仅会向附近展宽,还会形成许多旁瓣,引起不同频率间的干扰,简称谱间干扰。
特别是强信号谱的旁瓣可能湮没弱信号的主谱或误认为是另一假信号的主谱线。
矩形窗的旁瓣幅度大,谱间干扰严重。
相对而言,布莱克曼窗的旁瓣幅度比矩形窗小,谱间干扰小,但其主瓣过渡带宽,分辨率差。
(3)栅栏效应
我们应根据频谱图像分析误差,和减小误差的办法。
●3.2.3设计步骤
1.确定采样频率
2.画出时域波形
3.利用FFT画出频域波形
4.进行卷积处理
●3.3.4设计结果
xa(n)中参数p=8,q分别等于2,4,8,它们的时域和幅频特性:
q=8,改变p,使p分别等于8,12,14,信号序列的时域及幅频特性
xa(n)(p=8,q=2)和xb(n)的时域线性卷积:
xa(n)(p=8,q=2)和xb(n)的线性卷积:
xa(n)(p=8,q=2)和xb(n)的50点圆周卷积:
3.2对周期方波信号进行滤波
●3.2.1设计内容
1)生成一个基频为10Hz的周期方波信号。
2)选择适当的DFT参数,对其进行DFT,分析其频谱特性,并绘出相应曲线。
3)设计多个滤波器,滤除该周期信号中30Hz,40Hz,50Hz以后的频率分量,观察滤波前后信号的时域和频域波形变化
4)如果该信号淹没在噪声中,试滤除噪声信号。
●3.2.2设计思想
此题前面二问仍然是很基础的题目,可以很容易地得出程序代码,并且画出其的图像与频谱特性。
后二问则需要用到randn((1,N)函数生成随机噪声,并且需要用到filter函数滤去噪声。
首先对待滤波的信号进行频谱分析,观察信号频率分布的规律,此题目为加性噪声的情况,信号的频谱与噪声的频谱基本不重叠,可以采用频率选择滤波器直接对信号进行滤波。
再需要根据信号时域特性、频域特性、或时频特性确定滤波器的设计参数,设计出相应的数字滤波器。
最后,利用该数字滤波器对信号进行滤波,在时域和频域观察信号滤波的主观及客观效果。
若主观及客观效果满足要求,说明分析过程和滤波方法正确有效,若不满足要求,需要重新分析和设计。
题目要求的是10HZ的周期方波频率,我们可以采用square函数产生方波信号,要滤除30Hz,40HZ,50Hz之后的以外的频率成分,因此我选择了低通滤波器进行滤波,并且优先选择了巴特沃斯低通滤波器,因为此滤波器相对而言参数容易设置,同时有相对平坦的通带与阻带,可以满足题目的要求。
并且考虑到滤波器的过度,我选择了进行过度,即通带边界频率与阻带截至频率。
并且设置好最大通带衰减与最小阻带衰减,确定buttord的参数,之后便可以得到滤波器的传递函数,由此可以画出波形。
滤波之后采点进行傅里叶变化后得到频率图。
●3.2.3设计步骤
1.采用square函数产生方波信号
2.利用DFT进行频谱分析
3.设计巴特沃斯低通滤波器,滤除30Hz,40Hz,50Hz以外的所有信号
4.利用random函数产生一个随机噪声加到原信号上去,利用滤波器滤除噪声
●3.2.4设计结果
方波信号的产生和频谱分析:
滤除40Hz以外的所有频率信号后时域及频谱图
滤除40Hz以外的所有频率信号后时域及频谱图:
滤除40Hz以外的所有频率信号后时域及频谱图:
滤除随机信号:
3.3对语音信号实现回声处理
●3.3.1设计内容
获取一段音乐或语音信号,设计单回声滤波器,实现信号的单回声产生。
给出单回声滤波器的单位脉冲响应及幅频特性,给出加入单回声前后的信号频谱。
设计多重回声滤波器,实现多重回声效果。
给出多回声滤波器的单位脉冲响应及幅频特性,给出加入多重回声后的信号频谱。
设计多段均衡器,使得不同频率的混合音频信号,通过一个均衡器后,增强或削减某些频率分量
●3.3.2设计思想
利用系统函数来读取声音文件,得到采样频率和频谱特性,要实现声音信号的单重、多重回声效果,在原函数的基础上加入零序列可以使声音信号延后,再乘以一个衰减系数,可以得到回声信号,然后进行累加,得到回声信信号。
最后设计均衡器,使得不同频率的混合音频信号,通过一个均衡器后,增强或削减某些频率区域。
可以先设计出一个低通滤波器,将低通滤波器的滤波频率进行增大或减小,再延后滤波信号,并进行累加,过滤,便可以得到设计的均衡器。
●3.3.3设计步骤
1.读取语音
2.画出时域波形
3.利用FFT画出频域波形
4.进行单回声处理
5.进行多回声处理
6.利用均衡器进行处理
●3.3.4设计结果
获取语音信号:
单回声滤波:
多重回声滤波:
均衡器设计:
四、结果分析
4.1Gaussian序列频域变换分析
1)根据采样定理可知,采样频率fs应大于二倍的最高频率,故在取2000Hz作为采样频率后,没有出现明显的频谱混叠现象。
2)结果共显示了三幅图。
其中图二是N很小,截断效应明显的频谱图;图三是N=200,明显减小了截断效应的频谱图。
图二图三比较可以看出,图二中本没有的频率信号出现在频谱图中,这是由于截断效应引起的,而图三滤除了本没有的频率信号,明显减少了截断效应对频谱图的影响
4.2对周期方波信号进行滤波
1)方波信号的频谱幅度随着f的增大而逐渐减小。
2)滤除该周期信号中30Hz,40Hz,50Hz以后的频率分量后,频域波形发生了明显的变化,30Hz,40Hz,50Hz以外的频谱幅度为零,即30Hz,40Hz,50Hz以后的频率分量已全部滤除。
4.3对语音信号实现回声处理
1)读取音乐信号“noisy”记录其采样频率,需要使用函数“wavread”,画出其时域波形之后进行傅立叶变换,得到频域波形;对于声音信号的快放和慢放,只需要改变其频率就可以实现,在课程设计中考虑到需要满足不同要求,便设定语句a=input('请输入音乐变速倍数');只需输入变速倍数,快放系数大于1,慢放系数小于1,用语句sound(y,a*fs)就可以实现;对于声音信号的放大和衰减功能的实现,改变信号幅度即可,类似于上一个要求,由用户输入音乐放大倍数b=input('请输入音乐放大倍数'),声音信号放大则系数大于1,衰减则系数小于1,用语句sound(b*y,fs)实现该功能;
2)要声音信号的多重回放功能,对原信号进行扩展,该序列依次后移,空位补零序列,产生三个相同长度,但是声音信号(即扩展序列中非零段)位于不同位置的序列,然后对这三个信号进行叠加,就可以实现题意要求的多重回放功能;
3)设计均衡器,使得得不同频率的混合音频信号,通过一个均衡器后,增强或削减某些频率区域,基本原理依然是设计低通滤波器原型,对于该滤波器进行改进,扩展得到可以实现要求的均衡器,利用alpha=[1,3,0.5,2]可设计不同放大或者衰减倍数的滤波器。
即先根据设计FIR滤波器的原理设计出一个低通滤波器,改变参数并叠加得到所需要的均衡器,实现不同频段声音信号的放大和衰减。
五、总结
在这次历时近一个月的数字信号处理课程设计中,我收获颇多。
1、开始设计时,不要太过于追求完美,有思路就马上记录下来,在查阅资料也要注意记录重点。
2、遇到问题,不要着急,保住沉着的心态,通过查阅资料、请教老师或同学找出解决途径。
3、做设计,单凭自己的力量是不够的,要学会学习别人好的方面,多查阅资料,多与老师、同学交流,学会把别人的知识转变为自己的知识。
4、了解了许多汇编程序的思想,扩展了自己的视野,不再仅仅局限于书本中几条简短的程序,而且更重要的是明白写程序的态度:
仔细谨慎,精益求精。
5、养成良好的工作态度,细心认真,这对以后工作具有重要意义。
第一次选题目时,初步浏览了所有备选题目,可能是由于这门课程是在上学期学习的,一些知识已经不是很清楚,只是脑海中存在着一些简单的记忆,看到第一题目有实现声音信号的快放、慢放、放大、衰减等功能,比较感兴趣,于是选择了第一题。
但是再后来完成课程设计的过程中,发现这并不简单,而且相关知识点已经模糊,所以又重新拿起MATLAB和数字信号处理,选择要完成本次课设所需要储备的基本知识重新研究。
第一题和第二题基本都可以在书本上找到类似的题目,但是课程设计的题目会更系统、更庞大一点,于是我把基本原型理解清楚,然后做出简单的信号时域采样,频率特性,画出它们的时域与频域波形,分析它们的频谱特性,观察不同长度、不同窗函数下的截断效应和谱间干扰,借助于书和网络工具,研究不同窗函数的效果,以及不同采样点数对信号波形的影响,重新掌握学过的知识。
最感兴趣的第三题也使花费时间和经历最多的题目,相对于前两道题目,第三题更加系统,要求也更高,最初甚至不清楚怎样读取声音信号,怎样得到它的频域波形,于是就上网查询,了解到函数可以实现此功能,便开始尝试,声音信号快放和慢放,以及放大衰减功能,根据自己的思路只需改变信号的频率和幅度便可以实现,再次借助函数完成此两项功能。
而在实现声音信号回放功能的时候,只是有大体思路,要将信号移频,叠加,但是不知道功能怎样实现,请教同学后明白要补加零序列,使几个序列通常度便可以实现。
最后均衡器的实现,在刚开始做的时候不清楚怎样实现不同频段的改变,在研究书本之后也没有思路,便上网查找类似均衡器的设计,找到方法,看懂、理解设计过程,自己设计出了符合要求的均衡器。
在设计过程中,犯了些错误,发现自己还不够认真不够细心,有些错误本来可以避免,但是由于粗心,输入错误等检错改错很久。
另外以前的知识学习的不是很牢固,但这次课程设计,不但巩固了以前的知识,还学习了新内容,增加了自己的思考能力,锻炼了学习能力,达到了目的。
同时也明白了学习过程中不能在完全学会了才动手去做,我们应该边学边做,在摸索中学习,不断发现问题,不断解决问题,这样才能在更正错误、补充不足中不断进步。
只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
最后感谢老师在这次课程设计的过程中答疑解惑,有了老师的帮助,才更快的找到方向,改正错误,减少一些不必要的时间损失,更快更好的完成课程设计任务。
六、附录
6.1参考书目
1)数字信号处理(第三版)
2)MATLAB程序设计与应用
6.2源程序
6.2.1
6.2.1.1
p=8;
q1=2;
q2=4;
q3=8;
n=0:
15;
xa1=exp(-(n-p).^2./q1);
xa2=exp(-(n-p).^2./q2);
xa3=exp(-(n-p).^2./q3);
Fa1=abs(fft(xa1));
Fa2=abs(fft(xa2));
Fa3=abs(fft(xa3));
subplot(3,2,1);
stem(n,xa1,'.','r');
grid;
xlabel('n');
title('p=8,q=2的时域特性');
subplot(3,2,2);
stem(n,Fa1,'.');
grid;
xlabel('n');
title('p=8,q=2的幅频特性');
subplot(3,2,3);
stem(n,xa2,'.','r');
grid;
xlabel('n');
title('p=8,q=4的时域特性')
subplot(3,2,4);
stem(n,Fa2,'.');
grid;
xlabel('n');
title('p=8,q=4的幅频特性');
subplot(3,2,5);
stem(n,xa3,'.','r');
grid;
xlabel('n');
title('p=8,q=8的时域特性')
subplot(3,2,6);
stem(n,Fa3,'.');
grid;
xlabel('n');
title('p=8,q=8的幅频特性');
6.2.1.2
q=8;
p1=8;
p2=12;
p3=14;
n=0:
15;
xa1=exp(-(n-p1).^2./q);
xa2=exp(-(n-p2).^2./q);
xa3=exp(-(n-p3).^2./q);
Fa1=abs(fft(xa1));
Fa2=abs(fft(xa2));
Fa3=abs(fft(xa3));
subplot(3,2,1);
stem(n,xa1,'.','r');
grid;
xlabel('n');
ylabel('q=8,p=8的时域特性');
subplot(3,2,2);
stem(n,Fa1,'.');
grid;
xlabel('n');
ylabel('q=8,p=8的幅频特性');
subplot(3,2,3);
stem(n,xa2,'.','r');
grid;
xlabel('n');
ylabel('q=8,p=12的时域特性');
subplot(3,2,4);
stem(n,Fa2,'.');
grid;
xlabel('n');
ylabel('q=8,p=12的幅频特性');
subplot(3,2,5);
stem(n,xa3,'.','r');
grid;
xlabel('n');
ylabel('q=8,p=14的时域特性');
subplot(3,2,6);
stem(n,Fa3,'.');
grid;
xlabel('n');
ylabel('q=8,p=14的幅频特性');
6.2.1.3
N=50;
n=0:
15;
m=0:
49
p=8;
q=2;
a=0.1;
f=0.0625;
x1=exp(-(n-p).^2/q);
x2=cos((0.2*pi)*m)+cos((0.9*pi)*m);
yn=conv(x1,x2);
subplot(1,1,1);
n=0:
length(yn)-1;
stem(n,yn,'.');
title('xa(n)与xb(n)线性卷积的结果');
xlabel('n');
ylabel('y(n)');
6.2.1.4线性卷积
N=50;
n=0:
15;
m=0:
49
p=8;
q=2;
xa=exp(-((n-p).^2)./q);
xb=cos((0.2*pi)*m)+cos((0.9*pi)*m);
x=conv(xa,xb);
F=fft(x);
X=abs(F);
subplot(2,1,1);
stem(x,'.');
title('x(n)线性卷积序列');
xlabel('n');
ylabel('x(n)');
grid;
subplot(2,1,2);
stem(X,'.','r');
title('线性卷积的幅频特性曲线');
xlabel('k');
ylabel('|X(k)|');
grid;
6.2.1.550点圆周卷积
N=50;
n=0:
15;
m=0:
49
p=8;
q=2;
xa=exp(-((n-p).^2)./q);
xb=cos((0.2*pi)*m)+cos((0.9*pi)*m);
Fa=fft(xa,N);
Xa=abs(Fa);
Fb=fft(xb,N);
Xb=abs(Fb);
F=Fa.*Fb;
X=Xa.*Xb;
x=ifft(F,N);
subplot(2,1,1)
stem(x,'.');
title('圆周卷积原序列');
xlabel('n');
ylabel('x(n)');
grid;
subplot(2,1,2);
stem(X,'.','r');
grid;
title('圆周卷积幅频特性');
xlabel('k');
ylabel('|X(k)|');
6.2.2方波信号的时域、频域分析
6.2.2.1方波信号的产生及频域分析
t=0:
0.001:
1;
x=square(2*pi*10*t);%生成基频为10Hz的周期方波信号
subplot(2,1,1);
plot(t,x);
title('基频为10Hz的周期方波信号');
xlabel('时间(秒)');
ylabel('函数值(福特)');
axis([00.4-22]);
Fs=1000;%采样频率
T=1/10;%采样长度
N=T*Fs;%采样点数
t1=0:
1/Fs:
1/Fs*(N-1);
x1=square(2*pi*10*t1);
f=(-N/2)*Fs/N:
Fs/N:
((N/2-1))*Fs/N;
fx=fftshift(fft(x,N))/N;
subplot(2,1,2);
plot(f,abs(fx));
title('方波信号的频谱')
xlabel('频率')
ylabel('函数值fx')
6.2.2.2滤除30Hz以后所有频率分量
Fs=1000;
t=0:
1/Fs:
2;
x=square(2*pi*10*t);
wp=2*28/Fs;ws=2*40/Fs;Rp=3;As=30;
[N,wc]=buttord(wp,ws,Rp,As);
[B,A]=butter(N,wc);
[H,W]=freqz(B,A);
%用该滤波器对方波进行滤波
y1=filter(B,A,x);
subplot(2,1,1);
plot(t,y1);
title('滤波后时域波形');%30Hz滤波后时域波形
M=512
t1=0:
1/Fs:
1/Fs*(M-1);
x1=square(2*pi*10*t1);
fs=(-M/2)*Fs/M:
Fs/M:
((M/2-1))*Fs/M;
ys=fftshift(fft(y1,M))/M;
subplot(2,1,2);
plot(fs,abs(ys));
title('滤波后频域波形')
xlabel('频率')
ylabel('函数值fx')
axis([-606001]);
6.2.2.3滤除40Hz以后所有频率分量
Fs=1000;
t=0:
1/Fs:
2;
x=square(2*pi*10*t);
wp=2*40/Fs;ws=2*50/Fs;Rp=3;As=30;
[N,wc]=buttord(wp,ws,Rp,As);
[B,A]=butter(N,wc);
[H,W]=freqz(B,A);
%用该滤波器对方波进行滤波
y1=filter(B,A,x);
subplot(2,1,1);
plot(t,y1);
title('滤波后时域波形');%30Hz滤波后时域波形
M=512
t1=0:
1/Fs:
1/Fs*(M-1);
x1=square(2*pi*10*t1);
fs=(-M/2)*Fs/M:
Fs/M:
((M/2-1))*Fs/M;
ys=fftshift(fft(y1,M))/M;
subplot(2,1,2);
plot(fs,abs(ys));
title('滤波后频域波形')
xlabel('频率')
ylabel('函数值fx')
axis([-707001]);
6.2.2.4滤除50Hz以后所有频率分量
Fs=1000;
t=0:
1/Fs:
2;
x=squar