数字信号课程设计报告书.docx

上传人:b****7 文档编号:11377020 上传时间:2023-02-28 格式:DOCX 页数:32 大小:1.67MB
下载 相关 举报
数字信号课程设计报告书.docx_第1页
第1页 / 共32页
数字信号课程设计报告书.docx_第2页
第2页 / 共32页
数字信号课程设计报告书.docx_第3页
第3页 / 共32页
数字信号课程设计报告书.docx_第4页
第4页 / 共32页
数字信号课程设计报告书.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

数字信号课程设计报告书.docx

《数字信号课程设计报告书.docx》由会员分享,可在线阅读,更多相关《数字信号课程设计报告书.docx(32页珍藏版)》请在冰豆网上搜索。

数字信号课程设计报告书.docx

数字信号课程设计报告书

 

《数字信号》课程设计报告

学院:

信息科学与工程

专业班级:

通信1201

 

一、目的与要求

是使学生通过上机使用Matlab工具进行数字信号处理技术的仿真练习,加深对《信号分析与处理(自)》课程所学基本理论和概念的理解,培养学生应用Matlab等工具进行数字信号处理的基本技能和实践能力,为工程应用打下良好基础。

二、主要内容

1.了解Matlab基本使用方法,掌握Matlab数字信号处理的基本编程技术。

掌握数字信号的基本概念。

2.用Matlab生成几种典型数字信号(正弦信号、矩形信号、三角波信号等),并做幅频特性分析

2.Matlab编程实现典型离散信号(正弦信号、矩形信号、三角信号)的离散傅立叶变换,显示时域信号和频谱图形(幅值谱和相位谱);以正弦周期信号为例,观察讨论基本概念(混叠、泄漏、整周期截取、频率分辨率等)。

3.设计任意数字滤波器,并对某类型信号进行滤波,并对结果进行显示和分析。

4.利用matlab求解差分方程,并做时域和频域分析。

用matlab函数求解单位脉冲响应,并利用窗函数分离信号。

5.用matlab产生窗函数,并做世玉和频域分析。

6.显示图像,理解图像的模型,将图像进行三原色分解和边缘分析。

三.课程设计题目

一、

1)生成信号发生器:

能产生频率(或基频)为10Hz的周期性正弦波、三角波和方波信号。

绘出它们的时域波形

2)为避免频谱混叠,试确定各信号的采样频率。

说明选择理由。

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

分析说明选择理由。

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

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

 

二、已知三个信号

,经调制产生信号

,其中

为常数,

为具有窄带特性的Hanning信号。

将此已调信号通过信道传输,描述该信道的差分方程为

得到接收信号

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);gridon;

axis([02-22]);

title('正弦信号');

矩形信号

t=0:

0.001:

0.5;

y=square(2*pi*10*t,50);

plot(t,y);gridon;

axis([00.5-1.51.5]);

title('周期方波信号')

三角波信号

t=-0.3:

0.01:

0.3;

y=sawtooth(10*pi*t,0.5);

plot(t,y);gridon;

axis([-0.30.3-1.51.5]);

title('三角波信号')

 

2)为避免频谱混叠,试确定各信号的采样频率。

说明选择理由。

采样频率不能过低,必须fs>fm,即采样频率必须大于最高截止频率的二倍(对采样频率的要求,即采样频率要足够大,采样的值要足够多,才能恢复原信号)。

上题中信号频率为10Hz,则采样频率应该大于或等于20Hz,这样采样离散信号能无失真的恢复到原来的连续信号。

一个频谱在区间(-w,w)以外为零的频带有限信号,可以唯一的由其在区间间隔Ts上的样点值所确定。

当采样频率小于两倍信号(这里指是信号)最大频率时,经过采样就会发生频谱混叠,这使得采样后的信号序列频谱不能真实地反映原信号的频谱。

所以在利用DFT分析连续信号的频谱时,必须注意这一问题。

避免混叠现象的唯一方法是保证采样速率足够高,使频谱交叠现象不致出现。

也就是说,在确定采样频率之前,必须对信号的性质有所了解,一般在采样前,信号通过一个防混叠低通滤波器。

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*10*t)')

xlabel('t')

ylabel('Amplitude')

axis([0,1,-1,1]);

subplot(2,1,2)

plot(f,abs(F))

xlabel('Frequency');

ylabel('|X(e^{jw})|')

 

当N取50时则为

 

对于方波:

对于三角波:

3)所谓频谱泄漏,就是信号频谱中各谱线之间相互影响,使得测量结果偏离实际值,同时在谱线两侧其他频率点上出现一些幅值较小的假谱。

导致频谱泄漏的原因是采样频率和信号频率的不同步,造成周期采样信号的相位在始端和终端不连续。

采样不同步是造成频谱泄漏的根本原因。

当采样同步,窗口宽度等于整数个周期,矩形框的过零点与离散频点正好对齐,就没有泄漏,窗口宽度不是整数个周期,谐波频谱分布不再是一条谱线而是在整个频域内分布,频谱之间相互干扰,出现频谱泄漏。

综上所述,减少采样的同步误差是抑制频谱泄漏的根本措施。

所以截取数据的长度最好是信号周期的整数倍。

泄漏指的是信号频谱中各谱线之间相互影响,使得测量结果偏离实际值,同时在谱线两侧其他频率点上出现一些幅值较小的假谱。

导致频谱泄漏的原因是采样频率和信号频率的不同步,造成周期采样信号的相位在始端和终端不连续。

f1=10;

t=0:

0.1:

100;

fs=100;

T=1/fs;

n=0:

200;%保证n*T

xt=sin(2*pi*f1*t);

xn=sin(2*pi*f1*n*T);

subplot(2,1,1);

plot(n,xn);

xlabel('n');ylabel('xn');

title('离散的时域序列');

N=100;%保证N

wn=boxcar(N);

Wn=[wn'zeros(1,200-N+1)];%保证维度一样

Xn=Wn.*xn;

M=128;%采样点数

Xm=abs(fft(Xn,M)/(M/2));%M点FFT变换

subplot(2,1,2)

f=linspace(0,fs,M);

plot(f,Xm);

xlabel('f(Hz)');

ylabel('幅度');

title('加矩形窗处理后的频域函数');

 

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

正弦信号a=sin(20*pi*t)

t=0:

0.001:

0.999;

subplot(311)

a=sin(20*pi*t);

plot(t,a);gridon;title('sin20pi*t');xlabel('T');

b=fft(a);

subplot(312);

stem(t*1000,abs(b)/1000,'fill');xlabel('Hz');

axis([-105000.5]);

gridon;title('频率特性')

subplot(313)

stem(t*1000,angle(b)/1000,'fill');xlabel('Hz');

axis([0100-0.0040.004])

gridon;title('相频特性')

方波信号a=square(2*pi*t,50)

t=0:

0.001:

0.5;

a=square(2*pi*10*t,50);

subplot(311)

plot(t,a);gridon;

axis([00.5-1.51.5]);

title('周期方波信号')

b=fft(a);

subplot(312)

stem(t*100,abs(b)/100,'fill');

axis([05004]);

gridon;title('频率特性')

subplot(313)

stem(t*100,angle(b)/100,'fill');

axis([05-0.040.04]);

gridon;title('相频特性')

三角波信号

t=-0.3:

0.01:

0.3;

a=sawtooth(10*pi*t,0.5);

subplot(311)

plot(t,a);gridon;

axis([-0.30.3-1.51.5]);

title('三角波信号')

b=fft(a);

subplot(312)

stem(t*100,abs(b)/100,'fill');

axis([05000.5]);

gridon;title('频率特性')

subplot(313)

stem(t*100,angle(b)/100,'fill');

axis([025-0.040.04]);

gridon;title('相频特性')

 

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

整周期阶段现象很明显,非正整周期截取时它的最大数字频率不在0.2~0.4

之间,这与理论值相差是比较大的。

在截取长度不是很长时必须要整周期截取,这样才能保证截断误差不是很大。

clc

omega=pi/4;

ns=0;

nf=64;

n=[ns:

nf];

xn=sin(omega*n);

xk=fft(xn,128);

xn1=n(1:

50);%分周期序列截取

xk1=fft(xn1,128);

%绘图

k=0:

127;wk=2*k/128;

subplot(4,1,1);stem(n,xn,'.');

xlabel('n');ylabel('xn');title('(a)整周期截取的正弦周期信号');grid

subplot(4,1,2);stem(wk,abs(xk),'.');

title('(b)整周期截取128点dft的幅频特性图');

xlabel('\omega/\pi');ylabel('幅度');grid

subplot(4,1,3);stem(0:

length(xn1)-1,xn1,'.');

xlabel('n');ylabel('xn');title('(c)非整周期截取周期信号');grid

subplot(4,1,4);stem(wk,abs(xk1),'.');

title('(d)非整周期截取128点dft的幅频特性图');

xlabel('\omega/\pi');ylabel('幅度');grid

二、已知三个信号

,经调制产生信号

,其中

为常数,

为具有窄带特性的Hanning信号。

将此已调信号通过信道传输,描述该信道的差分方程为

得到接收信号

1)分析Hanning信号

的时域与频域特性

2)分析已调信号

的时域与频域特性

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

4)分析接收信号

的频谱

5)设计带通滤波器从接收信号

中还原出三个已调信号。

基本原理:

汉宁窗时域表达式

,MATLAB实现

在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。

已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,本实验仅在时域求解。

在计算机上适合用递推法求差分方程的解,最简单的方法是采用MATLAB语言的工具箱函数filter函数。

也可以用MATLAB语言的工具箱函数conv函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。

(1)n=51;

window=hanning(n);

[h,w]=freqz(window,1);

subplot(1,2,1)

stem(window);

subplot(1,2,2)

plot(w/pi,20*log(abs(h)/abs(h

(1))));

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.11720.9842-0.40220.2247];

b=[0.2247-0.40220.9842-1.11721];

n=1:

49;

hn=impz(b,a,n);

stem(n,hn,'k','f');

ylabel('脉冲响应¨h(n)');

xlabel('序号(n)');

title('单位脉冲响应');

4)a=[1-1.11720.9841-0.40220.2277];

b=[0.2277-0.40220.9841-1.11721];

yn=filter(b,a,sn);

subplot(311);

plot(yn);

[H,w]=freqz(yn,1,200);

X=abs(H);

length(w)

length(H)

Y=20*log10(X);

subplot(312);

plot(w/pi,Y);

subplot(3,1,3);

plot(w/pi,angle(H));

title('相频特性');

xlabel('\omega/\pi');

ylabel('phi(\omega)');

axis([00.2-33]);

gridon

5)观察y(n)的图像可得

wp1=[0.21,0.28];

ws1=[0.2,0.3];

wp2=[0.43,0.57];

ws2=[0.41,0.6];

wp3=[0.71,0.82];

ws3=[0.69,0.85];

分离信号一

a=[1-1.11720.9841-0.40220.2277];

b=[0.2277-0.40220.9841-1.11721];

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=1.*pn.*cos(1*pi*n/4)+2.*pn.*cos(2*pi*n/4)+3.*pn.*cos(3*pi*n/4);

yn=filter(b,a,sn);

wp=[0.21,0.28];

ws=[0.2,0.3];

Rp=1;

As=20;

[n,wc]=cheb1ord(wp,ws,Rp,As);

[bz,az]=cheby1(n,Rp,wc);

x1=filter(bz,az,yn);

subplot(211),plot(x1)

[H,w]=freqz(x1,1,200);

subplot(212);

plot(w/pi,20*log10(abs(H)))

信号二

a=[1-1.11720.9841-0.40220.2277];

b=[0.2277-0.40220.9841-1.11721];

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=1.*pn.*cos(1*pi*n/4)+2.*pn.*cos(2*pi*n/4)+3.*pn.*cos(3*pi*n/4);

wp=[0.43,0.57];

ws=[0.41,0.6];

Rp=1;

As=20;

[n,wc]=cheb1ord(wp,ws,Rp,As);

[bz,az]=cheby1(n,Rp,wc);

x1=filter(bz,az,yn);

subplot(211),plot(x1)

[H,w]=freqz(x1,1,200);

title('信号二图像');

subplot(212);

plot(w/pi,20*log10(abs(H)));

title('频谱')

信号三

a=[1-1.11720.9841-0.40220.2277];

b=[0.2277-0.40220.9841-1.11721];

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=1.*pn.*cos(1*pi*n/4)+2.*pn.*cos(2*pi*n/4)+3.*pn.*cos(3*pi*n/4);

yn=filter(b,a,sn);

wp=[0.71,0.8];

ws=[0.69,0.85];

Rp=1;

As=20;

[n,wc]=cheb1ord(wp,ws,Rp,As);

[bz,az]=cheby1(n,Rp,wc);

x1=filter(bz,az,yn);

subplot(211),plot(x1)

[H,w]=freqz(x1,1,200);

subplot(212);

plot(w/pi,20*log10(abs(H)))

三、图像信号相关处理

1)读入一幅彩色图像

2)将彩色图像进行三原色分解,分解出R、G、B分量,并用图像显示出来

3)将彩色图像灰度化,转换为灰度图像并显示

4)对灰度图像用几种典型的边缘检测算子进行边缘检测,显示检测出的边缘。

基本原理:

MATLAB支持JPEG,BMP,PCX,TIFF,GIF等图像文件格式。

灰度图像:

数据矩阵中的元素值一般都在[0,1]或[0,255]之间,灰度图像根据这些数据利用线性插值来的色图中的颜色种类匹配。

灰度图像一般看起来试衣服黑白图像,但是色彩明暗比二值图像更为丰富、因为每一个像素点的取值在[0,1]或[0,255]之间。

灰度图像读入matlab中是一个二维的平面矩阵,其中行与列的乘积代表其图片中像素点的个数。

RGB图像:

图像中的每一个像素用三个数据来存储,分别指定红、蓝、绿三原色在像素颜色中的比例关系,组成一个三维数组,读入matlab后是一个三维的矩阵。

RGB图像就是采用红蓝绿作为三原色的。

其中R为红色,G为绿色,B为蓝色,这样这个三维矩阵A就可以表示一个彩色矩阵,也就是一整数字图片可以再matlab中读成一个矩阵A。

这个三维矩阵的第一维就是上图中第一层表示红色的数值,第二维为第二层代表绿色的数值,第三维为第三层代表蓝色的数值。

1)clc;

a=imread('H:

\ww.jpg');

imshow(a),title('原彩色图像');

2)clc;

a=imread('H:

\ww.jpg');

subplot(2,2,1),imshow(a),title('Ô²ÊɫͼÏñ');

ar=a(:

:

1);

ag=a(:

:

2);

ab=a(:

:

3);

subplot(2,2,2),imshow(ar),title('R');

subplot(2,2,3),imshow(ag),title('G');

subplot(2,2,4),imshow(ab),title('B');

 

3)clc;

a=imread('H:

\ww.jpg');

subplot(2,1,1),imshow(a),title('原彩色图像');

b=rgb2gray(a);

subplot(2,1,2),imshow(b),title('灰度图像');

4)a=imread('H:

\ww.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基本使用方法,掌握了MATLAB数字信号处理的基本编程技术,实现了典型离散信号的DFT及数字滤波器的设计与应用。

数字信号处理是一门比较抽象的课程,通过MATLAB语言可以把抽象的理论用简洁直观的图形表示出来。

MATLAB是一个很好的编程平台,我要在今后的学习中继续深入学习,让MATLAB发挥更大的作用,以帮助学习高深知识。

通过此次实验,学会了利用DFT来对周期、非周期信号做频谱分析,采样定理理解更加深刻,通过改变采样间隔,实现混叠泄露现象。

得知采样的重要性,在今后的学习应用中,可以正确采样,不发生混叠泄露,使信号处理正确准确。

学会了窗函数的用法,通过对信号加矩形窗、hanning窗、hamming窗,加深了窗函数的概念理解,并且通过对同一个信号加不同窗的比较,出不同窗的特点。

对时域加窗相乘与频域卷积的比较得到时域结果的正确。

数字信号处理课程设计虽然只有短短的一周,但是它是我们向工程问题靠近的很重要的训练,我体会理论知识必须联系实际,这样才是学习的最佳途径。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1