第一篇:数字信号处理(DSP)课程设计报告
中南大学
数字信号处理课程设计报告
专业班级: 通信工程1201
指导老师:李宏
姓
名:
学
号:
完成日期:2014年10月18日
前
言
现代信号处理是将信号表示并处理的理论和技术,而数字信号处理与模拟信号处理是信号处理的子集。在本次课程设计中主要以数字信号处理来解决问题。数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波,因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。而数字信号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的。
数字信号处理的算法需要利用计算机或专用处理设备如数字信号处理器(DSP)和专用集成电路(ASIC)等。数字信号处理技术及设备具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等突出优点,这些都是模拟信号处理技术与设备所无法比拟的。数字信号处理的核心算法是离散傅立叶变换(DFT),是DFT使信号在数字域和频域都实现了离散化,从而可以用通用计算机处理离散信号。而使数字信号处理从理论走向实用的是快速傅立叶变换(FFT),FFT的出现大大减少了DFT的运算量,使实时的数字信号处理成为可能、极大促进了该学科的发展。
MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户接口、连接其它编程语言的程序等。
一、课程设计目的:
1.全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。
2.掌握信号分析与处理的基本方法与实现
3.提高综合运用所学知识独立分析和解决问题的能力; 4.熟练使用一种高级语言进行编程实现。
二、课程设计题目:
(一):
1)生成信号发生器:能产生频率(或基频)为10Hz的周期性正弦波、三角波和方波信号。绘出它们的时域波形
2)为避免频谱混叠,试确定各信号的采样频率。说明选择理由。3)对周期信号进行离散傅立叶变换,为了克服频谱泄露现象,试确定截取数据的长度,即信号长度。分析说明选择理由。4)绘出各信号频域的幅频特性和相频特性
5)以正弦周期信号为例,观察讨论基本概念(频谱混叠、频谱泄漏、整周期截取等)。
(二):
已知三个信号aip(n),经调制产生信号s(n)aip(n)cos(in/4),其中ai为
i1常数,p(n)为具有窄带特性的Hanning信号。将此已调信号通过信道传输,描述该信道的差分方程为
y(n)1.1172y(n1)0.9841y(n2)0.4022y(n3)0.2247y(n4)0.2247x(n)0.4022x(n1)0.9841x(n2)1.1172x(n3)x(n4)
得到接收信号y(n)s(n)*h(n)
1)分析Hanning信号p(n)的时域与频域特性 2)分析已调信号s(n)的时域与频域特性 3)分析系统的单位脉冲响应h(n)4)分析接收信号y(n)的频谱
5)设计带通滤波器从接收信号y(n)中还原出三个已调信号。
3(三):图像信号相关处理
1)读入一幅彩色图像
2)将彩色图像进行三原色分解,分解出R、G、B分量,并用图像显示出来
3)将彩色图像灰度化,转换为灰度图像并显示
4)对灰度图像用几种典型的边缘检测算子进行边缘检测,显示检测出的边缘。
三、调试及结果分析(截图):
(一):
1)
频率为10Hz的周期性正弦波:
频率为10Hz的周期性三角波:
频率为10Hz的周期性方波:
2)采样频率不能过低,必须fs>=2fm,即采样频率必须大于或等于最高截止频率的二倍(对采样频率的要求,即采样频率要足够大,采样的值要足够多,才能不失真的恢复原信号)。题目中信号频率为10Hz,则采样频率应该大于或等于20Hz,这样的话采样离散信号才能够无失真的恢复到原来的连续信号。3)截取数据长度(即信号长度)N=T*fs=2 4)
频率为10Hz的周期性正弦波的幅频特性和相频特性:
频率为10Hz的周期性三角波的幅频特性和相频特性:
频率为10Hz的周期性方波的幅频特性和相频特性:
5)
频谱混叠:一个信号的最高频率比如是fmax,那它的频谱就是在-fmax~fmax之间有值。对这个信号进行时域采样(就是取离散的点),设采样率为fs。有一个定理:对信号进行时域fs的采样,信号的频谱就会在频域以fs为周期重复。那么如果fs>=2fmax,可想而知,频域宽度为fs的频带内,是可以放得下一整个完整的频谱的,所以不会混叠。如果fs<2fmax,频域每间隔fs就会出现一个频谱,必定会有相邻的频谱叠在一起的情况,就是混叠。
频谱泄露:对于频率为fs的正弦序列,它的频谱应该只是在fs处有离散谱。但是,在利用DFT求它的频谱做了截短,结果使信号的频谱不只是在fs处有离散谱,而是在以fs为中心的频带范围内都有谱线出现,它们可以理解为是从fs频率上“泄露”出去的,这种现象称 为频谱“泄露”。
整周泣截取:与周期函数一样,周期信号是每隔时间T以后,信号重复出现。T就称为信号的周期。
N取100时:
N取200时:
(二):
1)Hanning信号p(n)的时域与频域特性:
2)已调信号s(n)的时域与频域特性:
3)系统的单位脉冲响应h(n):
4)接收信号y(n)的频谱:
5)(设计带通滤波器)从接收信号y(n)中还原出三个已调信号:
(三):
1)读入一幅彩色图像:
2)将彩色图像进行三原色分解,分解出R、G、B分量,并用图像显示出来:
3)将彩色图像灰度化,转换为灰度图像并显示:
4)对灰度图像用几种典型的边缘检测算子进行边缘检测,显示检测出的边缘:
四、源程序:
(一): 1):
周期性正弦波: fs=10;w=2*pi*fs;t=0:0.01:2;y=sin(w*t);plot(t,y);grid on;axis([0 2-2 2]);title('正弦信号');
周期性三角波: t=-0.3:0.01:0.3;y=sawtooth(10*pi*t,0.5);plot(t,y);grid on;axis([-0.3 0.3-1.5 1.5]);title('三角波信号')
周期性方波: t=0:0.001:0.5;y=square(2*pi*10*t,50);plot(t,y);grid on;axis([0 0.5-1.5 1.5]);title('周期方波信号')
4):
周期性正弦波: t=0:0.001:0.999;subplot(311)a=sin(20*pi*t);plot(t,a);grid on;title('sin20pi*t');xlabel('T');b=fft(a);subplot(312);stem(t*1000,abs(b)/1000,'fill');xlabel('Hz');axis([-10 50 0 0.5]);grid on;title('幅频特性')subplot(313)stem(t*1000,angle(b)/1000,'fill');xlabel('Hz');axis([0 100-0.004 0.004])grid on;title('相频特性')
周期性三角波: t=-0.3:0.01:0.3;a=sawtooth(10*pi*t,0.5);subplot(311)plot(t,a);grid on;axis([-0.3 0.3-1.5 1.5]);title('三角波信号')b=fft(a);subplot(312)stem(t*100,abs(b)/100,'fill');axis([0 50 0 0.5]);grid on;title('幅频特性')subplot(313)stem(t*100,angle(b)/100,'fill');axis([0 25-0.04 0.04]);grid on;title('相频特性')周期性方波: t=0:0.001:0.5;a=square(2*pi*10*t,50);subplot(311)plot(t,a);grid on;axis([0 0.5-1.5 1.5]);title('周期方波信号')b=fft(a);subplot(312)stem(t*100,abs(b)/100,'fill');axis([0 50 0 4]);grid on;title('幅频特性')subplot(313)stem(t*100,angle(b)/100,'fill');axis([0 5-0.04 0.04]);grid on;title('相频特性')
5):
N=100(或:N=200);T=1;
t=linspace(0,T,N);x=sin(2*pi*10*t);dt=t(2)-t(1);f=1/dt;X=fft(x);F=X(1:N/2+1);f=f*(0:N/2)/N;subplot(2,1,1)plot(t,x)
title('x=sin(2*pi*50*t)')xlabel('t')
ylabel('Amplitude')axis([0,1,-1,1]);subplot(2,1,2)plot(f,abs(F))xlabel('Frequency');ylabel('|X(e^{jw})|')
(二): 1): N=100;n=0:99;Rn=[ones(1,N-1)zeros(1, 101-N)];pn=0.5*[1-cos((2*pi*n)/(N-1))].*Rn;subplot(211);stem(n,pn);title('汉宁信号');[H,w]=freqz(pn,1,200);magH=abs(H);length(w);length(H);magHdB=20*log10(magH);subplot(212);plot(w/pi,magHdB);2):
N=100;n=0:99;
Rn=[ones(1,N-1)zeros(1,101-N)];pn=0.5*[1-cos((2*pi*n)/(N-1))].*Rn;
sn=2*pn.*(cos(pi*n/4)+4*pn.*cos(pi*n/2)+6*pn.*cos(3*pi*n/4));subplot(211);stem(n,sn);
title('已调信号');
[H,w]=freqz(sn,1,200);magH=abs(H);length(w);length(H);
magHdB=20*log10(magH);subplot(212);plot(w/pi,magHdB);
3):
a=[1-1.1172 0.9842-0.4022 0.2247];b=[0.2247-0.4022 0.9842-1.1172 1];n=1:49;
hn=impz(b,a,n);stem(n,hn,'k','f');ylabel('脉冲响应 ¨h(n)');xlabel('序号(n)');title('单位脉冲响应');
4):
a=[1-1.1172 0.9842-0.4022 0.2247];b=[0.2247-0.4022 0.9842-1.1172 1];k=0:0.1:100;p=0.5-0.5*cos(2*pi*k./74);s=p.*(cos(pi*k/4)+2*cos(pi*k/2)+3*cos(3*pi*k/4));y=filter(b,a,s);z1=fft(y,256);plot([-128:127],fftshift(abs(z1)));axis([-30 30 0 120]);grid on;
5):
wp=200;ws=200;wp1=[0.2,0.3];ws1=[0.1,0.4];wp2=[0.4,0.6];ws2=[0.3,0.7];wp3=[0.7,0.8];ws3=[0.6,0.9];ap=1;as=20;N=100;n=0:99;
Rn=[ones(1,N-1)zeros(1,101-N)];pn=0.5*[1-cos((2*pi*n)/(N-1))].*Rn;
sn=2*pn.*(cos(pi*n/4)+4*pn.*cos(pi*n/2)+6*pn.*cos(3*pi*n/4));a=[1-1.1172 0.9841-0.4022 0.2277];b=[0.2277-0.4022 0.9841-1.1172 1];yn=filter(b,a,sn);
[n,wc]=cheb1ord(wp,ws,ap,as);[bz,az]=cheby1(n,ap,wc);subplot(311)bz1=bz;az1=az;x1=filter(bz1,az1,yn);plot(x1);subplot(312)bz2=bz;az2=az;x2=filter(bz2,az2,yn);plot(x2);subplot(313)bz3=bz;az3=az;x3=filter(bz3,az3,yn);plot(x3)
(三):
1):
clc;a=imread('F:星空.jpg');imshow(a),title('原彩色图像');2):
clc;a=imread('F:星空.jpg');subplot(3,2,1),imshow(a),title('原彩色图像');
ar=a(:,:,1);ag=a(:,:,2);ab=a(:,:,3);subplot(3,2,4),imshow(ar),title('R');
subplot(3,2,5),imshow(ag),title('G');subplot(3,2,6),imshow(ab),title('B');3):
clc;a=imread('F:星空.jpg');subplot(2,1,1),imshow(a),title('原彩色图像');b=rgb2gray(a);subplot(2,1,2),imshow(b),title('灰度图像');4):
a=imread('F:星空.jpg');b=rgb2gray(a);b1=edge(b,'sobel');b2=edge(b,'prewitt');b3=edge(b,'roberts');b4=edge(b,'log');b5=edge(b,'canny');subplot(3,2,1);imshow(b);title('灰度图像');subplot(3,2,2);imshow(b1);title('Sobel边缘检测');subplot(3,2,3);imshow(b2);title('Prewitt边缘检测');subplot(3,2,4);imshow(b1);title('Roberts边缘检测');subplot(3,2,5);imshow(b1);title('LoG边缘检测');subplot(3,2,6);imshow(b1);title('Canny边缘检测');
五、总结与心得体会:
在课程设计的这段时间,我获益匪浅,不但进一步掌握了数字信号处理的基础知识及MATLAB的基本操作,还详细了解并掌握了信号的产生、采样及频谱分析的方法。我进一步了解到凡事都需要耐心,细心仔细是成功的重要保证之一。虽然在做的过程中遇到了一些问题,但是在研究生学姐、班级同学的帮助以及自己的努力下,问题最终都得以解决。这次课程设计对我各方面的能力有了很大的提高,对我以后的工作、实践都有很大的帮助。
在此次课程设计当中,我经常把C语言的语法知识照搬到MATALAB设计中,从而导致调试失败,所以下次用此类语言做课程设计时,应事先学习下这类语言的基本语法,以免与其他语言相混淆。还有就是有些不定参数存在时,可先取定值,用于调试,这样可以节约调试时间,从而提高效率。
本次课程设计不但让我又学到了一些知识,而且也提高了我的综合能力,使我在各个方面都得到了锻炼。以后有这样的机会一定会更加的很好利用,它不仅可以提高学习的针对性而且可以很好的锻炼动手能力以及自己的逻辑设计能力和处理问题的能力,希望在以后的学习生活中会有更多的机会来加强这方面的能力。
参考文献:
[1] 《数字信号处理(第二版)》.丁玉美等 西安电子科技大学出版社 [2] 《数字信号处理及其MATLAB实现》,陈怀琛等译,电子工业出版社;
[3] 《MATLAB及在电子信息课程中的应用》,陈怀琛等,电子工业出版社
第二篇:数字信号处理课程设计..
课程设计报告
课程名称: 数字信号处理 课题名称: 语音信号的处理与滤波
姓 名: 学 号: 院 系: 专业班级: 指导教师: 完成日期: 2013年7月2日
目录
第1部分 课程设计报告………………………………………3 一.设计目的……………………………………………3 二.设计内容……………………………………………3 三.设计原理……………………………………………3 四.具体实现……………………………………………5 1.录制一段声音…………………………………5 2.巴特沃斯滤波器的设计………………………8 3.将声音信号送入滤波器滤波…………………13 4.语音信号的回放………………………………19 5.男女语音信号的频谱分析……………………19 6.噪声的叠加和滤除……………………………22 五. 结果分析……………………………………………27 第2部分 课程设计总结………………………………28 一. 参考文献……………………………………………28
第1部分 课程设计报告
一.设计目的
综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。
二.设计内容
录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换法设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;换一个与你性别相异的人录制同样一段语音内容,分析两段内容相同的语音信号频谱之间有什么特点;再录制一段同样长时间的背景噪声叠加到你的语音信号中,分析叠加前后信号频谱的变化,设计一个合适的滤波器,能够把该噪声滤除;
三.设计原理
1.在Matlab软件平台下,利用函数wavrecord(),wavwrite(),wavread(),wavplay()对语音信号进行录制,存储,读取,回放。
2.用y=fft(x)对采集的信号做快速傅立叶变换,并用[h1,w]=freqz(h)进行DTFT变换。
3.掌握FIR DF线性相位的概念,即线性相位对h(n)、H()及零点的约束,了解四种FIR DF的频响特点。
4.在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波。
5.抽样定理
连续信号经理想抽样后时域、频域发生的变化(理想抽样信号与连续信号频谱之间的关系)
理想抽样信号能否代表原始信号、如何不失真地还原信号即由离散信号恢复连续信号的条件(抽样定理)
理想采样过程描述: 时域描述:
ˆa(t)xa(t)T(t)xa(t)(tnT)xa(nT)(tnT)xnnT(t)频域描述:利用傅氏变换的性质,时域相乘频域卷积,若
n(tnT)ˆa(t)Xa(j)xXa(j)xa(t)T(j)T(t)
则有
ˆ(j)1X(j)(j)XaaT2121ˆXa(j)Xa(jjk)Xa(jjks)TkTTkˆ(j)与X(j)的关系:理想抽样信号的频谱是连续信号频谱的Xaa
周期延拓,重复周期为s(采样角频率)。如果:
X(j)Xa(j)a0s/2s/2即连续信号是带限的,且信号最高频率不超过抽样频率的二分之一,则可不失真恢复。
奈奎斯特采样定理:要使实信号采样后能够不失真还原,采样频率必须大于信号最高频率的两倍:s2h 或 fs2fh
四.具体实现
1.录制一段声音
1.1录制并分析
在MATLAB中用wavrecord、wavread、wavplay、wavwrite对声音进行录制、读取、回放、存储。
程序如下:
Fs=8000;%抽样频率 time=3;%录音时间 fprintf('按Enter键录音%ds',time);%文字提示 pause;%暂停命令 fprintf('录音中......');x=wavrecord(time*Fs,Fs,'double');%录制语音信号 fprintf('录音结束');%文字提示 fprintf('按Enter键回放录音');pause;%暂停命令
wavplay(x,Fs);%按任意键播放语音信号
wavwrite(x,Fs,'C:UsersacerDesktop数字信号sound.wav');%存储语音信号
N=length(x);%返回采样点数 df=fs/N;%采样间隔 n1=1:N/2;f=[(n1-1)*(2*pi/N)]/pi;%频带宽度 figure(2);subplot(2,1,1);plot(x);%录制信号的时域波形 title('原始信号的时域波形');%加标题 ylabel('幅值/A');%显示纵坐标的表示意义 grid;%加网格
y0=fft(x);%快速傅立叶变换 figure(2);subplot(2,1,2);plot(f,abs(y0(n1)));%原始信号的频谱图 title('原始信号的频谱图');%加标题 xlabel('频率w/pi');%显示横坐标表示的意义 ylabel('幅值 ');%显示纵坐标表示的意义 title('原始信号的频谱图');%加标题
grid;%加网格
图1.1 原始信号的时域与频谱图
1.2滤除无效点
针对实际发出声音落后录制动作半拍的现象,如何拔除对无效点的采样的问题: 出现这种现象的原因主要是录音开始时,人的反应慢了半拍,导致出现了一些无效点,而后而出现的无效的点,主要是已经没有声音的动作,先读取声音出来,将原始语音信号时域波形图画出来,根据己得到的信号,可以在第二次读取声音的后面设定采样点,取好有效点,画出滤除无效点后的语音信号时域波形图,对比可以看出。这样就可以解决这个问题。
x=wavread('C:UsersacerDesktop数字信号sound.wav', 7
[4000,24000]);%从4000点截取到24000结束 plot(x);%画出截取后的时域图形 title('截取后的声音时域图形');%标题 xlabel('频率');ylabel('振幅');grid;%画网格
图1.2 去除无效点
2.巴特沃斯滤波器的设计
2.1设计巴特沃思低通滤波器
MATLAB程序如下。滤波器图如图3.3所示。
%低通滤波
fp=1000;fs=1200;Fs=22050;rp=1;rs=100;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;Fs1=1;wap=2*tan(wp/2);was=2*tan(ws/2);[N,wc]=buttord(wap,was,rp,rs,'s');[B,A]=butter(N,wc,'s');[Bz,Az]=bilinear(B,A,Fs1);figure(1);[h,w]=freqz(Bz,Az,512,Fs1*22050);plot(w,abs(h));title('巴特沃斯低通滤波器');xlabel('频率(HZ)');ylabel('耗损(dB)');gridon;9
图2.1 巴特沃思低通滤波器
2.2设计巴特沃思高通滤波器
MATLAB程序如下。滤波器图如图3.5所示。%高通滤波
fp=4800;fs=5000;Fs=22050;rp=1;rs=100;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;T=1;Fs1=1;wap=2*tan(wp/2);was=2*tan(ws/2);10
[N,wc]=buttord(wap,was,rp,rs,'s');[B,A]=butter(N,wc,'high','s');[Bz,Az]=bilinear(B,A,Fs1);figure(1);[h,w]=freqz(Bz,Az,512,Fs1*22050);plot(w,abs(h));title('巴特沃斯高通滤波器');xlabel('频率(HZ)');ylabel('耗损(dB)');grid on;
图2.2巴特沃思高通滤波器
2.3设计巴特沃思带通滤波器
MATLAB程序如下。滤波器图如图3.7所示。%带通滤波
fp=[1200,3000];fs=[1000,3200];Fs=8000;rp=1;rs=100;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;T=1;Fs1=1;wap=2*tan(wp/2);was=2*tan(ws/2);[N,wc]=buttord(wap,was,rp,rs,'s');[B,A]=butter(N,wc,'s');[Bz,Az]=bilinear(B,A,Fs1);figure(4);[h,w]=freqz(Bz,Az,512,Fs1*1000);plot(w,abs(h));title('巴特沃斯带通滤波器');xlabel('频率(HZ)');ylabel('耗损(dB)');grid on;12
图2.3巴特沃思带通滤波器
3.将声音信号送入滤波器滤波
x=wavread('C:UsersacerDesktop数字信号sound.wav');%播放原始信号
wavplay(x,fs);%播放原始信号 N=length(x);%返回采样点数 df=fs/N;%采样间隔 n1=1:N/2;f=[(n1-1)*(2*pi/N)]/pi;%频带宽度 figure(4);subplot(4,2,1);plot(x);%录制信号的时域波形
title('原始信号的时域波形');%加标题 ylabel('幅值/A');%显示纵坐标的表示意义 grid;%加网格
y0=fft(x);%快速傅立叶变换 subplot(4,2,3);plot(f,abs(y0(n1)));%原始信号的频谱图 title('原始信号的频谱图');%加标题 xlabel('频率w/pi');%显示横坐标表示的意义 ylabel('幅值 ');%显示纵坐标表示的意义 title('原始信号的频谱图');%加标题 grid;%加网格
3.1低通滤波器滤波 fs=8000;beta=10.056;wc=2*pi*1000/fs;ws=2*pi*1200/fs;width=ws-wc;wn=(ws+wc)/2;n=ceil(12.8*pi /width);h=fir1(n,wn/pi,'band',kaiser(n+1,beta));[h1,w]=freqz(h);
ys=fftfilt(h,x);%信号送入滤波器滤波,ys为输出 fftwave=fft(ys);%将滤波后的语音信号进行快速傅立叶变换 figure(4);subplot(4,2,2);%在四行两列的第二个窗口显示图形 plot(ys);%信号的时域波形
title('低通滤波后信号的时域波形');%加标题 xlabel('频率w/pi');ylabel('幅值/A');%显示标表示的意义 grid;%网格
subplot(4,2,4);%在四行两列的第四个窗口显示图形 plot(f, abs(fftwave(n1)));%绘制模值 xlabel('频率w/pi');ylabel('幅值/A');%显示标表示的意义
title('低通滤波器滤波后信号的频谱图');%标题 grid;%加网格
wavplay(ys,8000);%播放滤波后信号
3.2高通滤波器滤波 fs=8000;beta=10.056;ws=2*5000/fs;wc=2*4800/fs;
width=ws-wc;wn=(ws+wc)/2;n=ceil(12.8*pi/width);h=fir1(n,wn/pi, 'high',kaiser(n+2,beta));[h1,w]=freqz(h);ys=fftfilt(h,x);%将信号送入高通滤波器滤波 subplot(4,2,5);%在四行两列的第五个窗口显示图形 plot(ys);%信号的时域波形 xlabel('频率w/pi');ylabel('幅值/A');%显示标表示的意义 title('高通滤波后信号的时域波形');%标题 ylabel('幅值/A');%显示纵坐标的表示意义 grid;%网格
fftwave=fft(ys);%将滤波后的语音信号进行快速傅立叶变换 subplot(4,2,7);%在四行两列的第七个窗口显示图形 plot(f,abs(fftwave(n1)));%绘制模值 axis([0 1 0 50]);xlabel('频率w/pi');ylabel('幅值/A');%显示标表示的意义
title('高通滤波器滤波后信号的频谱图');%标题 grid;%加网格
wavplay(ys,8000);%播放滤波后信号
3.3带通滤波器 fs=8000;beta=10.056;wc1=2*pi*1000/fs;wc2=2*pi*3200/fs;ws1=2*pi*1200/fs;ws2=2*pi*3000/fs;width=ws1-wc1;wn1=(ws1+wc1)/2;wn2=(ws2+wc2)/2;wn=[wn1 wn2];n=ceil(12.8/width*pi);h=fir1(n,wn/pi,'band',kaiser(n+1,beta));[h1,w]=freqz(h);ys1= fftfilt(h,x);%将信号送入高通滤波器滤波 figure(4);subplot(4,2,6);%在四行两列的第六个窗口显示图形 plot(ys1);%绘制后信号的时域的图形 title('带通滤波后信号的时域波形');%加标题 xlabel('频率w/pi');ylabel('幅值/A');%显示纵坐标表示的意义 grid;%网格
fftwave=fft(ys1);%对滤波后的信号进行快速傅立叶变换 subplot(4,2,8);%在四行两列的第八个窗口显示图形
plot(f, abs(fftwave(n1)));%绘制模值 axis([0 1 0 50]);xlabel('频率w/pi');ylabel('幅值/A');%显示标表示的意义 title('带通滤波器滤波后信号的频谱图');%加标题 grid;%网格
wavplay(ys1,8000);%播放滤波后信号 图形如下:
原始信号的时域波形幅值/A0-1012x 10原始信号的频谱图34幅值/A1低通滤波后信号的时域波形0.50-0.5012频率w/pi3400.51频率w/pi高通滤波后信号的时域波形幅值/A0幅值/A0幅值/Ax 10高通滤波器滤波后信号的频谱图5012频率w/pi34幅值/A0.20-0.2幅值/A2001000x 10低通滤波器滤波后信号的频谱图200100000.51频率w/pi带通滤波后信号的时域波形0.50-0.501234频率w/pix 10带通滤波器滤波后信号的频谱图50幅值 00.5频率w/pi1000.5频率w/pi1
分析:三个滤波器滤波后的声音与原来的声音都发生了变化。其中低
通的滤波后与原来声音没有很大的变化,其它两个都又明显的变化
4.语音信号的回放
sound(xlow,Fs,bits);%在Matlab中,函数sound可以对声音进行回放,其调用格式: sound(xhigh, Fs,bits);%sound(x, Fs, bits);sound(xdaitong, Fs,bits);5.男女语音信号的频谱分析
5.1 录制一段异性的声音进行频谱分析
Fs=8000;%抽样频率 time=3;%录音时间 fprintf('按Enter键录音%ds',time);%文字提示 pause;%暂停命令 fprintf('录音中......');x=wavrecord(time*Fs,Fs,'double');%录制语音信号 fprintf('录音结束');%文字提示 fprintf('按Enter键回放录音');pause;%暂停命令 wavplay(x,Fs);%按任意键播放语音信号
wavwrite(x,Fs,'C:UsersacerDesktop数字信号sound2.wav');%存储语音信号
5.2 分析男女声音的频谱
x=wavread(' C:UsersacerDesktop数字信号sound2.wav ');%播放原始信号,解决落后半拍
wavplay(x,fs);%播放原始信号 N=length(x);%返回采样点数 df=fs/N;%采样间隔 n1=1:N/2;
f=[(n1-1)*(2*pi/N)]/pi;%频带宽度 figure(1);subplot(2,2,1);plot(x);%录制信号的时域波形
title('原始女生信号的时域波形');%加标题 ylabel('幅值/A');%显示纵坐标的表示意义 grid;%加网格
y0=fft(x);%快速傅立叶变换 subplot(2,2,2);plot(f,abs(y0(n1)));%原始信号的频谱图 title('原始女生信号的频谱图');%加标题 xlabel('频率w/pi');%显示横坐标表示的意义 ylabel('幅值 ');%显示纵坐标表示的意义 grid;%加网格
[y,fs,bits]=wavread(' C:UsersacerDesktop数字信号sound.wav ');% 对语音信号进行采样
wavplay(y,fs);%播放原始信号 N=length(y);%返回采样点数 df=fs/N;%采样间隔 n1=1:N/2;f=[(n1-1)*(2*pi/N)]/pi;%频带宽度 subplot(2,2,3);plot(y);%录制信号的时域波形
title('原始男生信号的时域波形');%加标题 ylabel('幅值/A');%显示纵坐标的表示意义 grid;%加网格
y0=fft(y);%快速傅立叶变换
subplot(2,2,4);%在四行两列的第三个窗口显示图形 plot(f,abs(y0(n1)));%原始信号的频谱图 title('原始男生信号的频谱图');%加标题 xlabel('频率w/pi');%显示横坐标表示的意义 ylabel('幅值 ');%显示纵坐标表示的意义 grid;%加网格
5.3男女声音的频谱图
原始女生信号的时域波形0.50-0.5-1150100原始女生信号的频谱图幅值/A幅值 012345000x 10原始男生信号的时域波形0.50.5频率w/pi原始男生信号的频谱图1300200幅值/A0幅值 012x 1034100-0.5000.5频率w/pi1
图5.3男女声音信号波形与频谱对比
分析:就时域图看,男生的时域图中振幅比女生的高,对于频谱图女生的高频成分比较多
6.噪声的叠加和滤除
6.1录制一段背景噪声
Fs=8000;%抽样频率 time=3;%录音时间 fprintf('按Enter键录音%ds',time);%文字提示 pause;%暂停命令 fprintf('录音中......');x=wavrecord(time*Fs,Fs,'double');%录制语音信号
fprintf('录音结束');%文字提示 fprintf('按Enter键回放录音');pause;%暂停命令 wavplay(x,Fs);%按任意键播放语音信号 wavwrite(x,Fs,'C:UsersacerDesktop数字信号噪音.wav');%存储语音信号
6.2 对噪声进行频谱的分析
[x1,fs,bits]=wavread(' C:UsersacerDesktop数字信号噪音.wav ');%对语音信号进行采样
wavplay(x1,fs);%播放噪声信号 N=length(x1);%返回采样点数 df=fs/N;%采样间隔
n1=1:N/2;f=[(n1-1)*(2*pi/N)]/pi;%频带宽度 figure(5);subplot(3,2,1);plot(x1);%信号的时域波形 title('噪声信号的时域波形');grid;ylabel('幅值/A');y0=fft(x1);%快速傅立叶变换
subplot(3,2,2);plot(f,abs(y0(n1)));%噪声信号的频谱图 ylabel('幅值');title('噪声信号的频谱图');
6.3原始信号与噪音的叠加
fs=8000;[x,fs,bits]=wavread(' C:UsersacerDesktop数字信号sound.wav ');%对录入信号进行采样
[x1,fs,bits]=wavread(' C:UsersacerDesktop数字信号噪音.wav ');%对噪声信号进行采样
yy=x+x1;%将两个声音叠加
6.4叠加信号的频谱分析:
wavplay(yy,fs);%播放叠加后信号 N=length(yy);%返回采样点数 df=fs/N;%采样间隔 n1=1:N/2;f=[(n1-1)*(2*pi/N)]/pi;%频带宽度 figure(5);subplot(3,2,3);plot(yy,'LineWidth',2);%信号的时域波形
title('叠加信号的时域波形');xlabel('时间/t');ylabel('幅值/A');grid;y0=fft(yy);%快速傅立叶变换 subplot(3,2,4);plot(f,abs(y0(n1)));%叠加信号的频谱图 title('叠加信号的频谱图');xlabel('频率w/pi');ylabel('幅值/db');grid;
6.5 设计一个合适的滤波器将噪声滤除 fs=18000;%采样频率 Wp=2*1000/fs;%通带截至频率 Ws=2*2000/fs;%阻带截至频率 Rp=1;%最大衰减 Rs=100;%最小衰减
[N,Wn]=buttord(Wp,Ws,Rp,Rs);%buttord函数(n为阶数,Wn为截至频率)
[num,den]=butter(N,Wn);%butter函数(num为分子系数den为分母系数)
[h,w]=freqz(num,den);%DTFT变换
ys=filter(num,den,yy);%信号送入滤波器滤波,ys为输出 fftwave=fft(ys);%将滤波后的语音信号进行快速傅立叶变换 figure(5);subplot(3,2,5);plot(ys);%信号的时域波形
title('低通滤波后信号的时域波形');%加标题 ylabel('幅值/A');%显示标表示的意义 grid;%网格 subplot(3,2,6);plot(f, abs(fftwave(n1)));%绘制模值 title('低通滤波器滤波后信号的频谱图');%标题 xlabel('频率w/pi');ylabel('幅值/A');%显示标表示的意义 grid;%加网格
wavplay(ys,8000);%播放滤波后信号 grid;图形如下:
噪声信号的时域波形1100噪声信号的频谱图幅值/A0-1幅值0123450000.5叠加信号的频谱图1x 10叠加信号的时域波形10-101时间/t2200幅值/db34幅值/A100000.5频率w/pi1x 10低通滤波后信号的时域波形0.5低通滤波器滤波后信号的频谱图200幅值/A0-0.5幅值/A012x 1034100000.5频率w/pi1
图6.1噪音的叠加与滤除前后频谱对比
7.结果分析
1.录制刚开始时,常会出现实际发出声音落后录制动作半拍,可在[x,fs,bits]=wavread('d:matlavworkwomamaaiwo.wav')加 窗[x,fs,bits]=wavread('d:matlavworkwomamaaiwo.wav',[100 10000]),窗的长度可根据需要定义。
2.语音信号通过低通滤波器后,把高频滤除,声音变得比较低沉。当通过高通滤波器后,把低频滤除,声音变得比较就尖锐。通过带通滤波器后,声音比较适中。
3.通过观察男生和女生图像知:时域图的振幅大小与性别无关,只与说话人音量大小有关,音量越大,振幅越大。频率图中,女生高 27
频成分较多。
4.叠加噪声后,噪声与原信号明显区分,但通过低通滤波器后,噪声没有滤除,信号产生失真。原因可能为噪声与信号频率相近无法滤除。
第2部分 课程设计总结
通过本次课程设计,使我们对数字信号处理相关知识有了更深刻的理解,尤其是对各种滤波器的设计。在设计的过程中遇到了很多问题,刚刚开始时曾天真的认为只要把以前的程序改了参数就可以用了,可是问题没有我想象中的那么简单,单纯的搬程序是不能解决问题的。通过查阅资料和请教同学收获了很多以前不懂的理论知识。再利用所学的操作,发现所写的程序还是没有能够运行,通过不断地调试,运行,最终得出了需要的结果。整个过程中学到了很多新的知识,特别是对Matlab的使用终于有些了解。在以后的学习中还需要深入了解这方面的内容。在这次的课程设计中让我体会最深的是:知识来不得半点的马虎。也认识到自己的不足,以后要进一步学习。
八.参考文献
[1]数字信号处理教程(第三版)程佩青 清华大学出版社 [2]MATLAB信号处理 刘波 文忠 电子工业出版社 [3]MATLAB7.1及其在信号处理中的应用 王宏 清华大学出版社
[4]MATLAB基础与编程入门 张威 西安电子科技大学出版社
[5] 数字信号处理及其MATLAB实验 赵红怡 张常 化学工业出版社
[6]MATLAB信号处理详解 陈亚勇等 人民邮电出版社 [7] 数字信号处理
钱同惠 机械工业出版社 29
第三篇:数字信号处理课程设计
目 录
摘要...........................................................................................................................................1 1 绪论..............................................................................................................................................2
1.1 DSP系统特点和设计基本原则......................................................................................2 1.2 国内外研究动态.............................................................................................................2 2系统设计........................................................................................................................................3 3硬件设计........................................................................................................................................5
3.1 硬件结构...........................................................................................................................5 3.2 硬件电路设计...................................................................................................................7
3.2.1 总输入电路...........................................................................................................7 3.2.2 总输出电路...........................................................................................................7 3.2.3 语音输入电路.......................................................................................................9 3.2.4 语音输出电路.......................................................................................................9 实验结果及分析.........................................................................................................................10 4.1 实验结果.........................................................................................................................10 4.2 实验分析.........................................................................................................................12 5 总结与心得体会.........................................................................................................................13 参考文献.........................................................................................................................................14 致谢................................................................................................................................................15
摘要
基于DSP的语音信号处理系统,该系统采用TMS320VC5509作为主处理器,TLV320AIC23B作为音频芯片,在此基础上完成系统硬件平台的搭建和软件设计,从而实现对语音信号的采集、滤波和回放功能,它可作为语音信号处理的通用平台。
语音是人类相互之间进行交流时使用最多、最自然、最基本也是最重要的信息载体。在高度信息化的今天,语音信号处理是信息高速公路、多媒体技术、办公自动化、现代通信及智能系统等新兴领域应用的核心技术之一。通常这些信号处理的过程要满足实时且快速高效的要求,随着DSP技术的发展,以DSP为内核的设备越来越多,为语音信号的处理提供了良好的平台。本文设计了一个基于TMS320VC5509定点的语音信号处理系统,实现对语音信号的采集、处理与回放等功能,为今后复杂的语音信号处理算法的研究和实时实现提供一个通用平台。
关键词:语音处理;DSP;TMS320VC5509;TLV320AIC23B
1 绪论
语音是人类相互间所进行的通信的最自然和最简洁方便的形式,语音通信是一种理想的人机通信方式。语音通信的研究涉及到人工智能、数字信号处理、微型计算机技术、语言声学、语言学等许多领域,所以说语音的通信是一个多学科的综合研究领域,其研究成果具有重要的学术价值。另外通过语音来传递信息是人类最重要的、最有效、最常用的交换信息的形式。语言是人类特有的功能,声音是人类常用的工具,是相互传递信息的主要手段。同时也是众构成思想交流和感情沟通的最主要的途径。
1.1 DSP系统特点和设计基本原则
DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
1.2 国内外研究动态
语音信号处理作为一个重要的研究领域,已经有很长的研究历史。但是它的快速发展可以说是从1940年前后Dudley的声码器和Potter等人的可见语音开始的;20世纪60年代中期形成的一系列数字信号处理的理念和技术基础;到了80年代,由于矢量量化、隐马尔可夫模型和人工神经网络等相继被应用于语音信号处理,并经过不断改进与完善,使得语音信号处理技术产生了突破性的进展。一方面,对声学语音学统计模型的研究逐渐深入,鲁棒的语音识别、基于语音段的建模方法及隐马尔可夫模型与人工神经网络的结合成为研究的热点。另一方面,为了语音识别实用化的需要,讲者自适应、听觉模型、快速搜索识别算法以及进一步的语言模型的研究等课题倍受关注。
在通信越来越发达的当今世界,尤其最近几十年,语音压缩编码技术在移动 通信、IP电话通信、保密通信、卫星通信以及语音存储等很多方面得到了广泛的应用。因此,语音编码一直是通信和信号处理的研究热点,并其取得了惊人的进展,目前在PC机上的语音编码已经趋于成熟,而如何在嵌入式系统中实时实现语音压缩编码则是近些年来语音信号处理领域的研究热点之一。
2系统设计
在实际生活中,当声源遇到物体时会发生反射,反射的声波和声源声波一起传输,听者会发现反射声波部分比声源声波慢一些,类似人们面对山体高声呼喊后可以在过一会儿听到回声的现象。声音遇到较远物体产生的反射会比遇到较近的反射波晚些到达声源位置,所以回声和原声的延迟随反射物体的距离大小改变。同时,反射声音的物体对声波的反射能力,决定了听到的回声的强弱和质量。另外,生活中的回声的成分比较复杂,有反射、漫反射、折射,还有回声的多次反射、折射效果。
当已知一个数字音源后,可以利用计算机的处理能力,用数字的方式通过计算模拟回声效应。简单的讲,可以在原声音流中叠加延迟一段时间后的声流,实现回声效果。当然通过复杂运算,可以计算各种效应的混响效果。如此产生的回声,我们称之为数字回声。
本次实验的程序流程图如下:
图2.1 程序流程图
本次实验的系统框图如下:
图2.2 系统框图
3硬件设计
3.1 硬件结构
图3.1是系统的硬件结构框图, 系统主要包括VC5509和A IC23 两个模块。
图3.1系统硬件结构框图
利用VC5509 的片上外设I2C(Inter-Integrated Circuit, 内部集成电路)模块配置AIC23 的内部寄存器;通过VC5509 的McBSP(Multi channel Buffered Serial Ports, 多通道缓存串口)接收和发送采样的音频数据。控制通道只在配置AIC23 的内部寄存器时工作, 而当传输音频数据时则处于闲置状态。
AIC23通过麦克风输入或者立体声音频输入采集模拟信号, 并把模拟信号转化为数字信号, 存储到DSP的内部RAM中,以便DSP处理。
当DSP完成对音频数据的处理以后, AIC23再把数字信号转化为模拟信号, 这样就能够在立体声输出端或者耳机输出端听到声音。
AIC23能够实现与VC5509 DSP的McBSP端口的无缝连接, 使系统设计更加简单。接口的原理框图, 如下图所示。
图3.2 AIC23与VC5509接口原理图
系统中A IC23的主时钟12 MHz直接由外部的晶振提供。MODE接数字地, 表示利用I2 C控制接口对AIC23传输控制数据。CS接数字地, 定义了I2 C总线上AIC23的外设地址, 通过将CS接到高电平或低电平, 可以选择A IC23作为从设备在I2 C总线上的地址。SCLK和SDIN是AIC23控制端口的移位时钟和数据输入端,分别与VC5509的I2C模块端口SCL和SDA相连。
收发时钟信号CLKX1和CLKR1由A IC23的串行数据输入时钟BCLK提供, 并由A IC23的帧同步信号LRCIN、LRCOUT启动串口数据传输。DX1和DR1分别与A IC23 的D IN 和DOUT 相连, 从而完成VC5509与AIC23间的数字信号通信。
3.2 硬件电路设计
3.2.1 总输入电路
图3.3 总输入电路
从左到右各部分电路为:
话筒,开关,语音输入电路,UA741高增益放大电路,有源二阶带 通滤波器。
3.2.2 总输出电路
图3.4 总输出电路
从左到右各部分电路为:
LM386高频功率放大器及其外围器件连接电路,语音输出电路,开关,扬声器。
3.2.3 语音输入电路
图3.5语音输入电路
3.2.4 语音输出电路
图3.6 语音输出电路
语音信号通道包括模拟输入和模拟输出两个部分。模拟信号的输入输出电路如图所示。上图中MICBIAS 为提供的麦克风偏压,通常是3/4 AVDD,MICIN为麦克风输入,可以根据需要调整输入增益。下图中LLINEOUT 为左声道输出,RLINEOUT为右声道输出。用户可以根据电阻阻值调节增益的大小,使语音输入输出达到最佳效果。从而实现良好的模拟语音信号输入与模拟信号的输出。4 实验结果及分析
4.1 实验结果
按“F5”键运行,注意观察窗口中的bEcho=0,表示数字回声功能没有激活。这时从耳机中能听到麦克风中的输入语音放送。将观察窗口中bEcho的取值改成非0值。这时可从耳机中听到带数字回声道语音放送。
分别调整uDelay和uEffect的取值,使他们保持在0-1023范围内,同时听听耳机中的输出有何变化。
当uDelay和uEffect的数值增大时,数字回声的效果就会越加的明显。
图4.1 修改前程序图
图4.2 修改前程序图
图4.3 频谱分析
图4.4 左声道及右声道波形 4.2 实验分析
所以,从本实验可知当已知一个数字音源后,可以利用计算机的处理能力,用数字的方式通过计算模拟回声效应。简单的讲,可以在原声音流中叠加延迟一段时间后的声流,实现回声效果。当然通过复杂运算,可以计算各种效应的混响效果。
声音放送可以加入数字回声,数字回声的强弱和与原声的延迟均可在程序中设定和调整。5 总结与心得体会
通过本次课程设计,我明白了细节决定成败这句话的道理,在实验中,有很多注意的地方,都被忽视了,导致再花费更多的时间去修改,这严重影响了试验的进度。同时,在本次实验中我了解了ICETEK – VC5509 – A板上语音codec芯片TLV320AIC23的设计和程序控制原理,并进一步掌握了数字回声产生原理、编程及其参数选择、控制,以及了解了VC5509DSP扩展存储器的编程使用方法。
这一学期的理论知识学习加上这次课程设计,使我对DSP有了更加深刻的了解,对数字信号的处理功能,软硬件相结合,语音信号的采集与放送等等方面都有了很深的了解,相信本次课程设计,无论是对我以后的学习,还是工作等方面都有一个很大的帮助。因此,本次课程设计让我受益匪浅。
参考文献
[1]李利.DSP原理及应用[M].北京:中国水利水电出版社,2004.[2]王安民,陈明欣,朱明.TMS320C54xxDSP实用技术[M].北京:清华大学出版社,2007 [3]彭启琮,李玉柏.DSP技术[M].成都:电子科技大学出版社,1997 [4]李宏伟,等.基于帧间重叠谱减法的语音增强方法[J].解放军理工大学学报,2001(1):41~44 [5]TexasInstrumentsIncorporated.TMS320C54x系列DSP的CPU与外设[M].梁晓雯,裴小平,李玉虎,译.北京:清华大学出版社,2006 [6]赵力.语音信号处理[M].北京:机械工业出版社,2003比较图4和图5,可以看到1200Hz以上的频谱明显得到了抑制。
[7]江涛,朱光喜.基于TMS320VC5402的音频信号采集与系统处理[J].电子技术用,2002,28(7):70~72[8]TexasInstrumentsIncorporated:TMS320VC5402Datasheet,2001
致谢
在本次课程设计的即将完成之际,笔者的心情无法平静,本文的完成既是笔者孜孜不倦努力的结果,更是指导老师樊洪斌老师亲切关怀和悉心指导的结果。在整个课程设计的选题、研究和撰写过程中,老师都给了我精心的指导、热忱的鼓励和支持,他的精心点拨为我开拓了研究视野,修正了写作思路,对课程设计的完善和质量的提高起到了关键性的作用。另外,导师严谨求实的治学态度、一丝不苟的工作作风和高尚的人格魅力,都给了学生很大感触,使学生终生受益。在此,学生谨向老师致以最真挚的感激和最崇高的敬佩之情。
另外,还要感谢这段时间来陪我一起努力同学,感谢我们这个小团队,感谢每一个在学习和生活中所有给予我关心、支持和帮助的老师和同学们,几年来我们一起学习、一起玩耍,共同度过了太多的美好时光。我们始终是一个团结、友爱、积极向上的集体。
第四篇:数字信号处理课程设计参考题目
数字信号处理课程设计资料
使用MATLAB(或其他开发工具)编程实现下述内容并写出课程设计报告。
一、课程设计参考题目与设计内容(也可自行选题)
设计一基于DFT的信号频谱分析 主要要求:
1.对离散确定信号作如下谱分析:
(1)截取x(n)使x(n)成为有限长序列N,(长度N自己选)写程序计算出x(n)的N点DFT的 X(k),并画出时域序列图和相应的幅频图。
(2)将(1)中x(n)补零加长至M点,长度M自己选(,为了比较补零长短的影响,M可以取两次值,一次取较小的整数,一次取较大的整数),编写程序计算x(n)的M点DFT, 画出时域序列图和两次补零后相应的DFT幅频图。
2.研究信号频域的物理分辨率与信号频域的分析分辨率,明白两者的区别。(1)采集数据x(n)长度取N=16点,编写程序计算出x(n)的16点DFTX(k),并画出相应的幅频图。
(2)采集数据x(n)长度N=16点,补零加长至M点(长度M自己选),利用补零DFT计算 x(n)的频谱并画出相应的幅频图。
(3)采集数据x(n)长度取为M点(注意不是补零至M),编写程序计算出M点采集数据x(n)的的频谱并画出相应的幅频图。
3.对比设计内容1、2中各个仿真图,说明补零DFT的作用。补零DFT能否提高信号的频谱分辨率,说明提高频谱物理分辨率与频谱频域分辨率的措施各是什么?
设计二用窗函数法设计FIR数字低通滤波器 主要要求:
1.熟悉各种窗函数,在MATLAB命令窗下浏览各种窗函数,绘出(或打印)各种窗函数图。
2.编写计算理想低通滤波器单位抽样响应的m函数文件。
3根据指标(低通FIR滤波器的指标自行选择)要求选择窗函数的形状与长度N。4.编写m程序文件,通过调用设计内容2、3的m程序文件,计算所设计的实际低通FIR滤波器的单位抽样响应和频率响应,并打印在频率区间[O,π]上的幅频响应特性曲线,幅度用分贝表示。6.验证所设计的滤波器是否满足指标要求。
7.比较所选窗长N相同但窗形状不同对滤波器设计结果的影响以及选同一种窗函数但窗长N不同时对滤波器设计结果的影响,将结论写在报告中。
设计三 FIR数字滤波器设计 主要要求:
1.分别设计低通、带通、带阻和高通四种数字滤波器(FIR数字滤波器的指标自行选择);
2.说明设计目的,并分别阐述上述四类滤波器的设计原理、设计步骤,并给出所编写的相应的m程序;
3.仿真并打印上述四种滤波器的单位抽样响应和频率响应(频率区间[O,π]上的幅频响应特性曲线),并分析各个滤波器的特点,将结论写在报告中。
设计四
IIR数字滤波器设计 主要要求:
1.分别设计低通、带通、带阻和高通四种数字滤波器(FIR数字滤波器的指标自行选择);
2.说明设计目的,并分别阐述上述四类滤波器的设计原理、设计步骤,并给出所编写的相应的m程序;
3.仿真并打印上述四种滤波器的单位抽样响应和频率响应(频率区间[O,π]上的幅频响应特性曲线),并分析各个滤波器的特点,将结论写在报告中。
设计五语音信号去噪处理 主要要求:
1.在Windows环境下利用录音机或其他软件,录制一段自己的语音信号,时间控制在1秒左右,并对所录制的语音信号进行采样处理; 2.对语音信号做频谱分析,即画出采样后语音信号的时域波形和频域图;在语音信号中加入噪声信号(至少两种不同噪声信号),画出加噪语音信号的时域波形和频域图;
3.根据上步加噪语音信号频谱分析结果,确定数字滤波器的技术指标,设计合适的数字滤波器滤除噪声信号,并画出滤波器的频率响应曲线;
4.用所设计的数字滤波器对加噪语音信号进行滤波,并画出滤波后语音信号的时域波形和频域图,对滤波前后的语音信号进行对比,分析信号的变化; 5.利用MATLAB软件中的sound(x)函数实现对去噪语音信号的回放,验证设计效果。
二、课程设计撰写具体要求 1.阐述所选题目设计目的和要求;
2.阐述所选题目的设计思想(各种理论推导和计算)、系统功能结构及功能说明,并列出相应重要的MATLAB程序; 3.绘出设计中要求的各种曲线,并做出说明;
4.结合设计过程,归纳得出结论,并分析设计中遇到的问题及解决思路和方法; 5.写出设计体会; 6.参考文献;
7.程序源代码清单(放入课程设计报告册附录中)。
8.课程设计内容要求充实,叙述完整,语言流畅,格式规范,15~20页,A4纸打印。
9.课程设计报告封面要求:
10.设计报告要包含摘要关键词(3-5个)11.目录
一设计目的与要求………………………………………页码 二总体设计方案…………………………………………页码 三设计原理、结果与仿真分析…………………………页码 四结论……………………………………………………页码 五心得体会………………………………………………页码 参考文献…………………………………………………页码 附录………………………………………………………页码
特别注意:
1.所有的图要有编号和图名,所有的表也要有编号和表名; 2.数学公式要居中,公式编号右对齐。
第五篇:中南大学《数字信号处理》课程设计报告
中南大学
《现代信号处理》 课程设计报告
学 院: 专业班级:
姓 名:
学 号:
指导老师:
设计时间:
前 言
《现代信号处理》课程设计与《现代信号处理》课程配套,是通信工程类专业的重要实践环节。数字信号处理是每一个电子信息科学工作者必须掌握的重要知识。它采用计算机仿真软件,以数值计算的方法对信号进行分析、变换、滤波、检测、估计与识别等加工处理,以达到提取信息便于使用的目的。
通信工程专业的培养目标是具备通信技术的基本理论和应用技术,能从事电子、信息、通信等领域的工作。鉴于我校充分培养学生实践能力的办学宗旨,对本专业学生的培养要进行工程素质培养、拓宽专业口径、注重基础和发展潜力。特别是培养学生的创新能力,以实现技术为主线多进行实验技能的培养。学生通过《现代信号处理》课程设计这一重要环节,可以将本专业的主干课程《现代信号处理》从理论学习到实践应用,对数字信号处理技术有较深的了解,进一步增强学生动手能力和适应实际工作的能力。
目 录
前 言............................................................2 第一章 设计目的及要求.............................................4
1.1 课程设计目的................................................4 1.2 课程设计要求................................................4 1.3 课程设计选做题目............................................4 第二章 设计题目及思想.............................................5
2.1 各题目的设计思想............................................5
2.1.1 第一题................................................5 2.1.2 第二题...............................................6 2.1.3 第三题...............................................6 2.1.4 第四题...............................................7 2.1.5 第五题...............................................7 2.1.6 第六题...............................................8 2.2 GUI界面设计思想............................................9 第三章 调试及结果分析............................................12 3.1 GUI界面的结果与调试.......................................12 3.2 各题目的结果与调试.........................................12 3.2.1 第一题...............................................12 3.2.2 第二题...............................................13 3.2.3 第三题...............................................14 3.2.4 第四题...............................................15 3.2.5 第五题...............................................16 3.2.6 第六题...............................................21 第四章 课程设计总结..............................................24 4.1 课程设计所遇问题及解决方案.................................24 4.2 课程设计心得体会...........................................25 附录:............................................................26 参考文献..........................................................35 第一章 设计目的及要求
1.1 课程设计目的
1.全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。
2.掌握信号分析与处理的基本方法与实现
3.提高综合运用所学知识独立分析和解决问题的能力; 4.熟练使用一种高级语言进行编程实现。
1.2 课程设计要求
一、使用MATLAB(或其它开发工具)编程实现上述内容,写出课程设计报告。滤波器设计题目应尽量避免使用现成的工具箱函数。为便于分析与观察,设计中所有频谱显示中的频率参数均应对折叠频率归一化。
二、课程设计报告的内容包括:
(1)课程设计题目和题目设计要求;(2)设计思想和系统功能分析;
(3)设计中关键部分的理论分析与计算,关键模块的设计思路;(4)测试数据、测试输出结果,及必要的理论分析和比较;
(5)总结,包括设计过程中遇到的问题和解决方法,设计心得与体会等;(6)参考文献;(7)程序源代码清单。
三、课程设计考核要求:
课程考核分三部分,一部分是上机率,占20%;第二部分是检查成绩,最后两次上机为检查时间,占50%;第三部分为课程设计报告,占30%。注意:
(1)演示系统使用GUI界面或混合编程实现集成打包发布,酌情加分。(2)若发现程序或课程设计报告雷同,一律不及格。
1.3 课程设计选做题目
选题1.音乐信号处理:
1)获取一段音乐或语音信号,设计单回声滤波器,实现信号的单回声产 生。给出加入单回声前后的信号频谱。
2)设计多重回声滤波器,实现多重回声效果。给出加入多重回声后的信号频谱。
3)设计均衡器,使得得不同频率的混合音频信号,通过一个均衡器后,增强或削减某些频率区域。
选题二.对混有噪声的音乐信号进行滤波:
1)在一段音乐信号中混入两个频率的正弦型干扰信号,利用FFT计算该混合信号的频谱并确定干扰信号的频谱;
2)利用二阶带阻滤波器设计一个能滤出干扰信号的梳状滤波器; 3)利用梳状滤波器滤除信号中的噪声,播放处理前后的信号,并比较处理前后的结果
本次课程设计共有6道必做题目,并且我们并没有系统的学过MATLAB,所以我并没有做选做题。
第二章 设计题目及思想
2.1 各题目的设计思想
2.1.1 第一题
一、题目:
1.给定模拟信号:xa(t)e1000t
1)选择采样频率Fs = 5000Hz和合适的信号长度,采样得到序列 x1(n)。求并画出x1(n)及其序列傅里叶变换 |X1(ejw)|。
2)选择采样频率Fs = 1000Hz和合适的信号长度,采样得到序列 x2(n)。求并画出x2(n)及其序列傅里叶变换 |X2(ejw)|。3)说明|X1(ejw)|与|X2(ejw)|间的区别,为什么?
二、思想:
第一题主要的考查点是对连续时间信号的抽样,对抽样信号进行傅里叶变换以及不同采样频率对幅频特性曲线的影响等。主要的理论依据如下:
(1)对连续时间信号的抽样:设连续时间信号为x(t),则对其采样得到的离散时间信号为x(n)=x(nT),T为采样周期;
(2)离散时间信号的傅里叶变换:X(e)FT[x(n)]j
由于抽样后的离散时间信号题目没有给出,故应先对连续信号做抽样,后再对离散时间信号进行傅里叶变换。本次我直接采用输入公式的方式进行傅里叶变换。
nx(n)ejn。
2.1.2 第二题
一、题目:
2.已知两系统分别用下面差分方程描述:
y1(n)x(n)x(n1)
y2(n)x(n)x(n1)
试分别写出它们的传输函数,并分别打印H(ejw)~w曲线。说明这两个系统的区别。
二、思想:
第二题的主要考查点是由系统的方程得出系统的传输函数。而在MATLAB中有freqz函数可直接求出系统的传输函数,然后由abs函数以及angle函数可得出其幅频相频特性曲线。
2.1.3 第三题
一、题目:
3.已知已调信号x(t)cos(t)cos(9t),其中调制信号cos(t),载波为cos(9t)。
1)选择合适的采样频率及信号长度,使用FFT分析该已调信号的频谱并画出其幅频特性和相频特性曲线图。2)对该已调信号进行解调,恢复原调制信号。
二、思想:
第三题的主要考查点是信号的调制与解调。这属于通信原理的主要原理知识。本题第一问需要使用FFT分析已调信号的频谱特性,在MATLAB中FFT可以直接作为函数调用,所以我选择直接调用FFT对其进行分析。第二问中要 对已调信号进行解调。其主要思想是解调已调信号需要先将已调信号乘以载波后选择适当的滤波器进行滤波,将其多余信号滤除。
2.1.4 第四题
一、题目:
4.已知三角波序列x1(n)和反三角波序列x2(n):
n1,0n34n,0n3x1(n)8n,4n7 x2(n)n3,4n7
0,0,其它其它用N=8点FFT分析序列x1(n)和x2(n)的幅频特性,观察两者的序列形状和频谱特性曲线有什么异同?绘出两序列及其幅频特性曲线。在x1(n)和x2(n)的末尾补零,用N=16点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两情况的FFT频谱还有相同之处吗?这些变化说明了什么?
二、思想:
第四题的主要考查点是FFT快速傅里叶变换的用法。而这在MATLAB中,FFT可以直接作为函数调用,所以我选择用FFT快速傅里叶变换进行分析三角波序列。不过首先要将三角波以及反三角波的取值范围和函数值计算出来,后才可直接对序列进行FFT变换并分析其频谱特性。
2.1.5 第五题
一、题目:
5.设有一信号x(n)=1+cos(n)+cos(42n),设计各种IIR数字滤波器以实现: 31)低通滤波器,滤除cos(2n)的成分,保留成分1+cos(n)342)高通滤波器,滤除1+cos(n)的成分,保留成分cos(42n)33)带通滤波器,滤除1+cos(2n)的成分,保留成分cos(n)342n)34)带阻滤波器,滤除cos(n)的成分,保留成分1+cos(4要求:1)求出各个滤波器的阶数,设计各滤波器。画出各滤波器的幅频和相 频特性,计算滤波器的系统函数H(z)。2)画出滤波前后信号的时域、频域波形。
二、思想:
第五题的主要考查点是用IIR双线性变换法设计BW类型(低通、高通、带通以及帯阻)数字滤波器。
其主要理论依据如下:(1)正切变换实现频率压缩:
2tan(1T/2)/T
(2)双线性变换:
s(2/T)[(1z1)(1z1)]
或
z(2/Ts)/(2T/ s
(3)将所需数字滤波器的边界频率转换成相应类型的模拟滤波器的边界频率公式为:
(2/T)tan(/2)
其设计主要按照课中所学滤波器设计的步骤进行分步设计。但由于其系统函数的公式无法直接输入,故采用buttord函数进行巴特沃斯滤波器的方法分析所给参数计算出其系统函数的系数矩阵。再借由系统函数的系数矩阵得出具体的系统函数。得出系统函数后便可得到相应的阶数以及幅频、相频特性。
滤波前的信号频域波形由先对时域波形进行FFT变换后得出。对原信号的滤波则采用直接调用filter函数进行对原函数的滤波,而频域波形同样经由先FFT变换分析后得出。
2.1.6 第六题
一、题目:
6.1)用Hanning窗设计一线性相位带通数字滤波器,要求:N=15。观察它的实际3dB和20dB带宽。N=45,重复这一设计,观察幅频和相位特性的变化,注意长度N变化的影响;
2)分别改用矩形窗和Blackman窗,设计(1)中的带通滤波器,观察并记录窗函数对滤波器幅频特性的影响,比较三种窗的特点;总结窗的不同长度和不同窗对滤波器的影响
二、思想:
第六题的主要考查点是几种主要的窗函数(矩形窗、汉宁窗、哈明窗等)对离散时间信号的截取,并用FFT对其频谱进行分析。其主要理论依据如下:
(1)矩形窗(Rectangle Window)
wR(n)RN(n)
其幅度函数为:
WRg()sin(N/2)/sin(/2)
(2)汉宁(Hanning)窗——升余弦窗
wHn(n)0.5[1cos(2n/(N1))]RN(n)
其频谱函数为:
WHn(ej)FT[wHn(n)]WHng()ej(N1)/2
其幅度函数为:
WHng()0.5WRg()0.25[WRg(2/N)WRg(2/N)]
(3)哈明(Hamming)窗——改进的升余弦窗
wHm(n)[0.540.46cos(2n/(N1))]RN(n)
其频谱函数为:
WHm(ej)0.54WR(ej)0.23WR(ej(2/(N1)))0.23WR(ej(2/(N1)))
当N1时,其幅度函数可近似表示为:
WHmg()0.54WRg()0.23WRg(2/N)0.23WRg(2/N)
2.2 GUI界面设计思想
本次课程设计由于结果中图形太多,若一次性完成所以题目的演示则需要开创许多个新的窗口进行图形建立,这样不方便验收及查看。所以最后决定采用图形用户(Graphical User Interface,简称 GUI)界面,下面对GUI界面进行简单的一些介绍。
GUI 是 Graphical User Interface 的简称,即图形用户界面,通常人机交互图形化用户界面设计经常读做“goo-ee”,准确来说 GUI 就是屏幕产品的视觉体验和互动操作部分。
GUI 是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。
在MATLAB主界面中输入“guide”,再敲击回车键,弹出GUI界面窗口,即可新建GUI界面,如下图所示:
图2.5 GUI界面的新建窗口图
在图2.5的窗口中点击“OK”,则可新建一个GUI界面,并进入其编辑窗口,如图2.6所示:
图2.6 GUI界面的编辑窗口图
随后便可在此窗口内编辑演示界面,此次设计主要利用的是Static Text(静态文本)和Push Button(按钮)。在界面中输入相关的静态文本,并新建若干个按钮,再以此在每个按钮上点击右键,选择View CallBacks调出Call Back函数,将相应设计题的源代码输入Call Back函数界面中对应按钮的段落后。如图2.7 和2.8所示:
图2.7 调用CallBack的操作流程图
图2.8 CallBack代码编辑窗口图
如此便可以建立一个方便、美观又直观的演示界面,以便老师验收时操作简单、条理清晰、并且用时不长。第三章 调试及结果分析
3.1 GUI界面的结果与调试
这次设计的演示界面采用的是GUI界面,这一点在前面提到过,在此不赘述了,只将界面的调试结果说明一下。演示界面如图3.1所示:
图3.1 演示界面图
如图3.1所示,用户克根据需要选择题目,每个题中又有不同的选项,只要点击一下对应的按钮,相关信号的处理结果就会出现在一个新的figure窗口中。
3.2 各题目的结果与调试
3.2.1 第一题
第一题的调试结果如图3.2所示,各图形的意义均有明确表明。
图3.2 第一题的调试结果图
分析: 分别以所要求采样频率fs=5000Hz、1000Hz对xa(t)进行等间隔采样,得到x(n)xa(nT),(T1/fs为采样周期),可知,采样信号的频谱函数是在原模拟信号频谱函数的周期延拓;若以频率f为自变量,则以采样频率fs1/T为延拓周期;对频带限于fc的模拟信号xa(t),根据采样定理,只有当fs2fc时,采样后才不会发生频谱混叠失真。但是在Matlab上是无法计算连续函数,只有在当fs足够大的时候,我们才将频谱混叠忽略不计,从而可对采样序列进行傅里叶变换;最后应用subplot()命令实现画图,并注意到要归一化。
由以上实验得到的图形结果可以看到:,当采样频率越大的时候,采样信号的频谱越陡峭,而其失真情况也越来越小,根据采样定理“采样频率越接近信号频率,其失真情况就越小”可以得到上述结论。
3.2.2 第二题
第二题的调试结果如图3.3所示,各图形的意义均有明确表明。
图3.3 第二题的调试结果图
分析:由于所求系统的系统方程已经由题目可知,则其零极点分布图也可由上图所知。故根据计算所得出其系统函数后做FFT变换所得幅频特性和相频特性均由上图可知。
3.2.3 第三题
第三题的调试结果如图3.4所示,上图为第一问结果,下图为第二问结果。
图3.4 第三题的调试结果图
分析:当已调信号进行不同点数的采样后再经不同间隔的FFT变换后,其展现的幅频特性以及相频特性类似于上图。因选取的采样点不同则结果不同。第二问中的滤波器的设计参数由题目中的调制信号和载波决定,由此设计出的低通滤波器的系统函数图如上。最后因滤波器的不严密而导致解调后的原信号有所失真,并不能完完全全的解调出原信号。
3.2.4 第四题
第四题的调试结果如图3.5所示,图中所代表意义均有标明
图3.5 第四题的调试结果图
分析:首先先根据题目中所给的三角波函数以及反三角波函数的函数式得出其波形。经由不同采样的FFT变换后有stem画出其图形如上。由图可看出三角波序列和反三角波序列在8点的FFT变换后的图形基本一样,没有太大差别。而16点FFT后的图形则有不小差异,此说明对其FFT变换时,取的点数越多,图形差异越大。
3.2.5 第五题
第五题的调试结果第一问中低通滤波器的图形如图3.6所示。
图3.6 第五题的低通滤波器调试结果图
高通滤波器的图形如图3.7所示。
图3.7 第五题的高通滤波器调试结果图 带通滤波器的图形如图3.8所示。
图3.8 第五题的带通滤波器调试结果图 带阻滤波器的图形如图3.9所示。
图3.9 第五题的带阻滤波器调试结果图 分析:经由一下理论知识可依次求出各滤波器的参数及系统函数。(1)正切变换实现频率压缩:
2tan(1T/2)/T
(2)双线性变换:
s(2/T)[(1z1)(1z1)]
或
z(2/Ts)/(2T/ s(3)将所需数字滤波器的边界频率转换成相应类型的模拟滤波器的边界频率公式为:
(2/T)tan(/2)
频域图形均由FFT变换后可得出。此次设计IIR数字滤波器是其参数选择并不精准,均由自己在可行范围中尝试得出最像的结果。但其滤波器的幅频特性和相频特性仍然具有失真现象。
3.2.6 第六题
第六题的调试结果依次的图形如图4.0所示。
图4.0 第六题的调试结果图
分析:此图由上往下依次为N=15及N=45的汉明窗、布莱克曼窗和矩形窗。由图形可以看出N越小时窗函数的主瓣范围越大,副瓣坡度越缓。滤波器滤波功能越好。
第四章 课程设计总结
4.1 课程设计所遇问题及解决方案
拿到设计题时,完全不知道从何处入手,一开始只会按照书上的解题思路一步步来算,一步步来解这些题目,解出来后再设法将其输入编程中,从而的到想要的答案。可是每次如此,系统输出的结果总是和预想中的不一样,有些甚至不知道哪里出了错。不过后来,在翻阅了有关参考文献后,知道了题目中大部分内容都可以通过MATLAB强大的函数工具箱里的函数直接实现。开始设计后,总是用错函数,输错参数等,这类问题层出不穷,毕竟是第一次用MATLAB进行设计实践,很多问题还是要虚心向老师和同学请教的。在很多次的请教,修改后,程序基本成功地得到了运行,调试过程中又遇到了一些小问题,大多是由于粗心 导致的,这些问题在调试过程中都得到了修正。
这次课程设计过程中遇到的主要问题是频率归一化的问题,开始对归一化的概念不是很清楚。在问了班上能力较强的同学后,对这个概念深入理解了,并在程序中成功地实现了。
4.2 课程设计心得体会
通过这两周的《现代信号处理》课程设计实践,我学习会了MATLAB编程语言的基本概念、语法、语义和数据类型的使用特点,加深了对数字信号处理这门学科所学理论知识的理解,掌握了运用结构化程序设计的基本思想和方法,更重要的是培养了自己的自学能力。
因为这是我们第一次接触MATLAB编程语言,在编写程序以及调试的过程中遇到了很多困难,但是我通过去图书馆查找资料,请教同学老师,再自己一点点改善程序,最终还是编写出一个比较完善的程序,基本实现了所有要求功能,这是最值得我欣慰的一点。
刚拿到程序设计课题时,我感觉一片茫然,因为在之前的信号处理学习中,本身对数字信号处理这门学科的学习就不精深,更何况只是在一些例题中接触过MATLAB语言,甚至没有看过一些基础的书籍,更没有上过课,所以初次遇到一个实际问题,感觉无从下手。这是由于自己对MATLAB的模块设计不够理解,同时对MATLAB的基本语句一无所知,不过通过请教老师懂得了首先要了解解题思路,以及若要实现此次设计需要哪些最基本的思路和函数。这样一下子豁然开朗,掌握了基本设计思路之后,后面的编程就顺利多了。至此,我真真体会到清晰地思路对成功编写一个程序的重要性。
当然成功编写一个程序绝非易事,之前,我总以为程序能够正常运行,就代表着编程成功,后来我才发现我大错特错了。我用了三天时间,完成了程序的编写、改错,但我立刻发现尽管程序能够正常运行,部分功能却不完善,甚至不能出现自己想要的结果。经过一次又一次调试、修改又修改,一点一点发现问题并改正,我才真正发现编程远没有想象中的简单,并且深刻体会到编程和单纯的解题是有着多么大的不同。它需要的不仅是清晰地编程思路、编程技巧,还需要细心,有耐心有毅力。
在编程过程中,我遇到了许多问题,通过查找资料也未能找到原因,每次我想老师请教,可老师总不是万能的,顾不到每一位同学的要求。这时,同学就是一个很好的求助对象。我们可以找曾经接触过MATLAB的同学学习、交流、讨论。这样不仅我们可以学习,他们也可以更加巩固他们的知识。我想这便是团队 精神,有的时候真的是人多力量大。
最后,在此次编程过程中,我收获的不仅仅是对上学期已学的知识的巩固,和MATLAB这项新的工作平台,我还学会了遇到难题时不能轻易放弃,要有迎难而上的勇气,有时候自己一个人完成不了的理解不了的知识,多请教请教别人是一项很好的选择等等。总之,这次课程设计让我学会了很多,我会铭记于心,让其在以后的学习、生活或者工作中都时刻警醒着我。
附录:
源程序清单
%1.现代码 figure(1)t=-0.005:0.0001:0.005;y1=exp(-1000*abs(t));T=0.0002;n=-25:1:25;y2=exp(-1000*abs(n*T));N=200;k=0:1:N;w=pi*k/N;X=y2*exp(-j*n'*w);X=real(X);w=[-fliplr(w),w(2:N+1)];X=[fliplr(X),X(2:N+1)];subplot(2,2,1);plot(t,y1);title('原函数');xlabel('t/秒');ylabel('y1(n)');subplot(2,2,2);stem(n*T,y2,'.');xlabel('n*T/秒');ylabel('y2(n)');title('(1)离散序列,fs=5000');subplot(2,3,4);plot(w/pi,X);xlabel('频率/pi');ylabel('Xl(w)')title('(1)序列的傅里叶变换')t=-0.005:0.0001:0.005;y1=exp(-1000*abs(t));T=0.001;n=-5:1:5;y2=exp(-1000*abs(n*T));N=200;k=0:1:N;w=pi*k/N;X=y2*exp(-j*n'*w);X=real(X);w=[-fliplr(w),w(2:N+1)];X=[fliplr(X),X(2:N+1)];subplot(2,3,5);stem(n*T,y2,'.');xlabel('n*T/秒');ylabel('y2(n)');title('(2)离散序列,fs=1000');subplot(2,3,6);plot(w/pi,X);xlabel('频率/pi');ylabel('Xl(w)')title('(2)序列的傅里叶变换')
%2.figure(1)B=[1,1];A=1;subplot(2,3,3);zplane(B,A);xlabel('实部Re');ylabel('虚部Im');title('y(n)=x(n)+x(n-1)传输函数零极点分布');grid on [H,w]=freqz(B,A,'whole');subplot(2,3,1);plot(w/pi,abs(H),'linewidth',2);grid on;xlabel('omega/pi');ylabel('|H(e^j^omega)|');title('幅频响应特性');axis([0,2,0,2.2]);subplot(2,3,2);plot(w/pi,angle(H),'linewidth',2);grid on;axis([-0.1,2.1,-1.6,1.6]);xlabel('omega/pi');ylabel('phi(omega)');title('相频响应特性');B=[1,-1];A=1;subplot(2,3,6);zplane(B,A);xlabel('实部Re');ylabel('虚部Im');title('y(n)=x(n)-x(n-1)传输函数零极点分布');grid on [H,w]=freqz(B,A,'whole');subplot(2,3,4);plot(w/pi,abs(H),'linewidth',2);grid on;xlabel('omega/pi');ylabel('|H(e^j^omega)|');title('幅频响应特性 ');axis([0,2,0,2.2]);subplot(2,3,5);plot(w/pi,angle(H),'linewidth',2);grid on;xlabel('omega/pi');ylabel('phi(omega)');title('相频响应特性');axis([-0.1,2.1,-1.6,1.6]);
%3.%(1)figure(1)t=0:1.9:100;n=0:1:99;x1=cos(pi*t);x2=cos(9*pi*t);y1=x1.*x2;y2=fft(y1,100);subplot(3,1,1);plot(t,y1);title('已调信号x');xlabel('t/秒');ylabel('y1(n)');subplot(3,1,2);stem(n,abs(y2),'.');title('幅频特性');xlabel('频率/pi');ylabel('幅值');pha=angle(y2);subplot(3,1,3);stem(n,pha,'.');title('相频特性');xlabel('频率/pi');ylabel('相位(rad)');axis([0 99-5 5]);
%(2)figure(2)t1=1;t=[0:0.05:5];x=cos(pi*t).*cos(9*pi*t);%已调信号 subplot(2,2,1);plot(t,x);title('已调信号');y=x.*cos(9*pi*t);%已调信号再乘以载波信号 wp=6*pi/5;ws=14*pi/8;Rp=3;As=30;%选定滤波器的参数,并设计模拟低通滤波器 [N,wc]=buttord(wp,ws,Rp,As,'s');[B,A]=butter(N,wc,'s');[H,w]=freqs(B,A,127);%滤波器的系统函数 subplot(2,2,2);plot(w/(2*pi),abs(H));axis([0,5,0,1]);title('滤波器系统函数');w1=linspace(0,40,64);%求y的频谱 F1=y*exp(-j*t'*w1);F=[fliplr(F1),F1(2:64)];w=[-fliplr(w1),w1(2:64)];subplot(2,2,3);plot(w,abs(F)),title('y的频谱');Y3=H'.*F;%通过信号的频谱与系统函数相乘进行滤波 z=Y3*exp(j*w'*t)/pi;%滤波后的序列 subplot(2,2,4);plot(t,z);title('滤波后的序列');
%4.figure(1)n1=0:3,n2=4:7;x1=n1+1,x2=8-n2;subplot(2,3,1);stem([n1,n2],[x1,x2],'.');title('三角波序列');x=[1 2 3 4 4 3 2 1];subplot(2,3,2);stem(abs(fft(x)),'.');title('三角波序列8点FFT');x=[1 2 3 4 4 3 2 1 0 0 0 0 0 0 0 0];subplot(2,3,3);stem(abs(fft(x)),'.');title('三角波序列16点FFT');n1=0:3,n2=4:7;x1=4-n1,x2=n2-3;subplot(2,3,4);stem([n1,n2],[x1,x2],'.');title('反三角波序列');x=[4 3 2 1 1 2 3 4];subplot(2,3,5);stem(abs(fft(x)),'.');title('反三角波序列8点FFT');x=[4 3 2 1 1 2 3 4 0 0 0 0 0 0 0 0];subplot(2,3,6);stem(abs(fft(x)),'.');title('反三角波序列16点FFT');
%5.%低通 figure(1)n=0:1:24;x=1+cos(pi*n/4)+cos(2/3*pi*n);Wp=1/4*pi;Ws=2/3*pi;Ap=3;As=30;Os=2*tan(Ws/2);Op=2*tan(Wp/2);N=ceil(1/2*log10((10^(0.1*As)-1)/(10^(0.1*Ap)-1))./log10(Os/Op)), Oc1=Op*(10^(0.1*Ap)-1)^(-1/(2*N));Oc2=Os*(10^(0.1*As)-1)^(-1/(2*N));Oc=[Oc1,Oc2];Oc=min(Oc)
wp=[Wp/pi];wr=[Ws/pi];[N,wc]=buttord(wp,wr,Ap,As,'s');[b,a]=butter(N,wc,'low');sysl=tf(b,a)w=linspace(0,2*pi,500);
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('滤波前时域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('滤波前频域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('滤波后的时域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('滤波后的频域波形');
figure(2);freqz(b,a,1000);title('滤波器幅频相频响应');%高通 figure(1)n=0:1:24;x=1+cos(pi*n/4)+cos(2/3*pi*n);Wp=2*pi/3;Ws=1*pi/4;Ap=3;As=30;Os=2*tan(Ws/2);Op=2*tan(Wp/2);N=ceil(1/2*log10((10^(0.1*As)-1)/(10^(0.1*Ap)-1))./log10(Op/Os)), Oc1=(1/Op)*(10^(0.1*Ap)-1)^(-1/(2*N));Oc2=(1/Os)*(10^(0.1*As)-1)^(-1/(2*N));Oc=[Oc1,Oc2];Oc=min(Oc)
wp=[Wp/pi];wr=[Ws/pi];[N,wc]=buttord(wp,wr,Ap,As,'s');[b,a]=butter(N,wc,'high');sysl=tf(b,a)w=linspace(0,2*pi,500);
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('滤波前时域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('滤波前频域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('滤波后的时域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('滤波后的频域波形');
figure(2);freqz(b,a,1000);title('滤波器幅频相频响应');
%带通 figure(1);wp1=(3*pi)/16;wp2=(5*pi)/16;ap=1;ws1=(1*pi)/16;ws2=(5*pi)/9;as=50;wp=[wp1/pi wp2/pi];ws=[ws1/pi ws2/pi];[N,wn]=buttord(wp,ws,ap,as);[b,a]=butter(N,wn,'bandpass');N, sysl=tf(b,a), w=linspace(0,2*pi,500);
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('滤波前时域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('滤波前频域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('滤波后的时域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('滤波后的频域波形')
figure(2);freqz(b,a,1000);title('滤波器幅频相频响应');
%带阻 figure(1);
wp1=pi/16;wp2=(5*pi)/9;ap=1;ws1=(3*pi)/16;ws2=(5*pi)/16;as=50;wp=[wp1/pi,wp2/pi];ws=[ws1/pi,ws2/pi];[N,wc]=buttord(ws,wp,ap,as);[b,a]=butter(N,wc,'stop');w=linspace(0,2*pi,500);N, sysl=tf(b,a)
n=0:100;x1=1+cos(pi*n/4)+cos(2*pi*n/3);subplot(221),plot(n,x1);title('滤波前时域波形');y1=fft(x1,500);subplot(222),plot(w,abs(y1));title('滤波前频域波形');
x2=filter(b,a,x1);subplot(223),plot(n,x2)title('滤波后的时域波形');y2=fft(x2,500);subplot(224),plot(w,abs(y2));title('滤波后的频域波形')
figure(2);freqz(b,a,1000);title('滤波器幅频相频响应');
%6.%(1)figure(1)Window=hanning(16);h=fir1(15,[0.3 0.5],Window);
freqz(h,1)title('N=15的汉宁窗');figure(2)Window=hanning(46);h=fir1(45,[0.3 0.5],Window);freqz(h,1)title('N=45的汉宁窗');%(2)figure(3)Window=blackman(16);b=fir1(15,[0.3 0.5],Window);freqz(b,1)title('N=15的布莱克曼窗');
figure(4)Window=blackman(46);b=fir1(45,[0.3 0.5],Window);freqz(b,1)title('N=45的布莱克曼窗');
figure(5)Window=boxcar(16);b=fir1(15,[0.3 0.5],Window);freqz(b,1)title('N=15的矩形窗');
figure(6)Window=boxcar(46);b=fir1(45,[0.3 0.5],Window);freqz(b,1)title('N=45的矩形窗');
参考文献
[1]高西全,丁玉美.数字信号处理.第三版.西安:西安电子科技大学出版社,2008 [2]彭军,李宏.信号与信息处理基础.北京:中国铁道出版社,2009 [3]A.V.奥本海姆,等.信号与系统.刘树棠,译.西安:西安交通大学出版社,1985 [4]程佩青.数字信号处理教程.第二版.北京:清华大学出版社,2001 [5]陈怀琛,吴大正,高西全.MATLAB在电子信息课程中的应用.第三版.北京:电子工业出版社,2006 [6]董长虹.MATLAB信号处理与应用.北京:国防工业出版社,2005