数字信号处理(DSP)课程设计报告

中南大学

数字信号处理课程设计报告

     

     专业班级: 通信工程1201

     指导老师:李宏

     姓    名: 

     学    号:  

                                 完成日期:20##1018

前   言

现代信号处理是将信号表示并处理的理论和技术,而数字信号处理与模拟信号处理是信号处理的子集。在本次课程设计中主要以数字信号处理来解决问题。数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波,因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。而数字信号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的。 

数字信号处理的算法需要利用计算机或专用处理设备如数字信号处理器(DSP)和专用集成电路(ASIC)等。数字信号处理技术及设备具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等突出优点,这些都是模拟信号处理技术与设备所无法比拟的。数字信号处理的核心算法是离散傅立叶变换(DFT),是DFT使信号在数字域和频域都实现了离散化,从而可以用通用计算机处理离散信号。而使数字信号处理从理论走向实用的是快速傅立叶变换(FFT),FFT的出现大大减少了DFT的运算量,使实时的数字信号处理成为可能、极大促进了该学科的发展。 

MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户接口、连接其它编程语言的程序等。


一、课程设计目的: 

1.全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。 

2. 掌握信号分析与处理的基本方法与实现 

3.提高综合运用所学知识独立分析和解决问题的能力;

4.熟练使用一种高级语言进行编程实现。

二、课程设计题目:

(一):

1) 生成信号发生器:能产生频率(或基频)为10Hz的周期性正弦波、三角波和方波信号。绘出它们的时域波形

2) 为避免频谱混叠,试确定各信号的采样频率。说明选择理由。

3)对周期信号进行离散傅立叶变换,为了克服频谱泄露现象,试确定截取数据的长度,即信号长度。分析说明选择理由。

4)绘出各信号频域的幅频特性和相频特性

5)以正弦周期信号为例,观察讨论基本概念(频谱混叠、频谱泄漏、整周期截取等)。 

(二):

已知三个信号,经调制产生信号,其中为常数,为具有窄带特性的Hanning信号。将此已调信号通过信道传输,描述该信道的差分方程为

 

 得到接收信号

1)分析Hanning信号的时域与频域特性

2)分析已调信号的时域与频域特性

3)分析系统的单位脉冲响应

4)分析接收信号的频谱

5)设计带通滤波器从接收信号中还原出三个已调信号。

(三):图像信号相关处理

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信号的时域与频域特性:

2)已调信号的时域与频域特性:

3)系统的单位脉冲响应

4)接收信号的频谱:

5)(设计带通滤波器)从接收信号中还原出三个已调信号:

(三):

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及在电子信息课程中的应用》,陈怀琛等,电子工业出版社

相关推荐