燕山大学
课 程 设 计 说 明 书
题目:基于Matlab的信号吉布斯效应和栅栏效应的验证
学院(系):电气工程学院 年级专业: 09级仪表1班 学 号: [1**********]0 学生姓名: ********** 指导教师: *********** 教师职称: 教授 讲师
燕山大学课程设计(论文)任务书
院(系): 电气工程学院 基层教学单位:工业自动化仪表
说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
2012年 6 月 22 日
燕山大学课程设计评审意见表
摘 要
随着科技的发展,当今社会已经进入信息时代,人们每天都要接触各种各样载有信息的信号形式,如接受广播、电视信号、使用电话传送声音信号等,其目的是为了把不同形式的消息借助一定形式的信号进行表达或传递。
数字信号处理理论及其分析方法已应用于许多领域和学科中,通过功能强大的MATLAB软件与数字信号处理理论知识相互融合在一起,使我们对数字信号处理的理论知识能够有更加深厚理解,也提高了动手能力,实践并初步掌握了MATLAB的使用。 信号的数字化需要三个步骤:抽样、量化和编码。抽样是指用每隔一定时间的信号样值序列来代替原来在时间上连续的信号,也就是在时间上将模拟信号离散化。量化是用有限个幅度值近似原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。编码则是按照一定的规律,把量化后的值用二进制数字表示,然后转换成二值或多值的数字信号流。这样得到的数字信号可以通过电缆、微波干线、卫星通道等数字线路传输。在接收端则与上述模拟信号数字化过程相反,再经过后置滤波又恢复成原来的模拟信号。
根据本次课题要求,通过使用MATLAB,方便了在DFT中的繁琐的计算,并且直观形象的用计算机进行模拟仿真,通过观察图像,能够更加形象的看到栅栏效应和吉布斯效应,能够有更加形象的了解和分析。
离散傅里叶变换(DFT)理论,是数字信号处理理论和技术分析的重要基础之一,在数字信号处理及应用中有着非常重要的作用。本课程设计注重于利用MATLAB软件,根据设计要求,选择合适的参数进行频谱分析,进一步从理论和实验上分析DFT造成的栅栏效应。
关键字: 数字信号处理 频谱分析 吉布斯效应 栅栏效应
目 录
第一章:Matlab以及GUI简介
1.1 Matlab简介....................................3 1.2 GUI简介......................................3
第二章:离散傅立叶变换
2.1 傅立叶变换的定义 ..........................5 2.2 离散FT(DFT)的用法 .........................6
第三章:用DFT对信号进行频谱分析
3.1 频谱分析的概述 .......................... 7 3.2 MATLAB程序 .............................. 9 第四章:吉布斯效应
4.1 吉布斯效应的定义 ........................... 10 4.2 吉布斯效应的实现 ........................... 10 4.3 MATLAB程序 ................................ 11
第五章:栅栏效应
5.1 栅栏效应的定义 ............................. 12
5.2 栅栏效应的验证 ..............................12
5.3 MATLAB程序 ................................. 15
第六章:学习心得 ....................................16 第七章:参考文献 ....................................17
第一章 Matlab以及GUI简介 1.1 Matlab简介
MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。
1.2 GUI简介
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。
GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。
GUI的组成部分:
桌面 在启动时显示,也是界面中最底层,有时也指代包括窗口、文件浏览器在内的“桌面环境”。在桌面上由于可以重叠显示窗口,因此可以实现多任务化。一般的界面中,桌面上放有各种应用程序和数据的图标,用户可以依此开始工作。桌面与既存的文件夹构成里面相违背,所以要以特殊位置的文件夹的参照形式来定义内容。比如在微软公司的Windows XP系统中,各种用户的桌面内容实际保存在系统盘(默认为C盘):\Documents and Settings\[用户名]\桌面 文件夹里。墙纸,即桌面背景。可以设置为各种图片和各种附件,成为视觉美观的重要因素之一。
视窗 应用程序为使用数据而在图形用户界面中设置的基本单元。应用程序和数据在窗口内实现一体化。在窗口中,用户可以在窗口中操作应用程序,进行数据的管理、生成和编辑。通常在窗口四周设有菜单、图标,数据放在中央。在窗口中,根据各种数据/应用程序的内容设有标题栏,一般放在窗口的最上方,并在其中设有最大化、最小化(隐藏窗口,并非消除数据)、最前面、缩进(仅显示标题栏)等动作按钮,可以简单地对窗口进行操作。
单一文件界面 在窗口中,一个数据在一个窗口内完成的方式。在这种情况下,数据和显示窗口的数量是一样的。若要在其他应用程序的窗口使用数据,将相应生成新的窗口。因此窗口数量多,管理复杂。
多文件界面 在一个窗口之内进行多个数据管理的方式。这种情况下,窗口的管理简单化,但是操作变为双重管理。
标签 多文件界面的数据管理方式中使用的一种界面,将数据的标题在窗口中并排,通过选择标签标题显示必要的数据,这样使得接入数据方式变得更为便捷。上述中,多文件界面主要是微软视窗系统采用。而在其他环境中,通常多是单文件界面,所以无所谓单一/多文件界面的称呼问题。
菜单 将系统可以执行的命令以阶层的方式显示出来的一个界面。一般置于画面的最上方或者最下方,应用程序能使用的所有命令几乎全部都能放入。重要程度一般是从左到右,越往右重要度越低。命定的层次根据应用程序的不同而不同,一般重视文件的操作、编辑功能,因此放在最左边,然后往右有各种设置等操作,最右边往往设有帮助。一般使用鼠标的第一按钮进行操作。即时菜单(又称功能表)与应用程序准备好的层次菜单不同,在菜单栏以外的地方,通过鼠标的第二按钮调出的菜单称为“弹出菜单”。根据调出位置的不同,菜单内容即时变化,列出所指示的对象目前可以进行的操作。 图标 显示在管理数据的应用程序中的数据,或者显示应用程序本身。数据管理程序,即在文件夹中用户数据的管理、进行特定数据管理的程序的情况下,数据通过图标显示出来。通常情况下显示的是数据的内容或者与数据相关联的应用程序的图案。另外,点击数据的图标,一般可以之间完成启动相关应用程序以后再显示数据本身这两个步骤的工作。应用程序的图标只能用于启动应用程序。
按钮 菜单中,利用程度高的命令用图形表示出来,配置在应用程序中,成为按钮。应用程序中的按钮,通常可以代替菜单。一些使用程度高的命令,不必通过菜单一层层翻动才能调出,极大提高了工作效率。但是,各种用户使用的命令频率是不一样的,因此这种配置一般都是可以由用户自定义编辑。
第二章 离散傅立叶变换
2.1 傅立叶变换的定义
所谓傅里叶变换就是在以时间为自变量的“信号”与以频率为自变量的“频谱”函数之间的某种变换关系。随时间自变量形式的不同,其傅里叶变换的形式也有不同,常用的两种傅里叶变换:周期序列的离散傅里叶级数(DFS)和非周期序列的傅里叶变换(DTFT),其表示式分别为:
kDFSxXn
N1
n0
nex
j
2N
nk
(2-1)
jn
X(e
j
)DTFT[x(n)]
n
x(n)e
(2-2)
在实际工作中,当用数字计算机对信号进行频谱分析时,要求信号必须以有限长度
的离散值作为输入,而计算所得的频谱值自然也是有限、离散的。上述两种形式的傅里叶变换中,DFS变换满足时、频域自变量的离散化,但其时间变量和频率变量又同时具有周期性;DTFT变换满足时间自变量的有限长度(非周期能量有限信号),但其频率变量为连续形式。可见,这两种变换都难以实际应用。考虑到DFS变换的时、频域形式虽是周期序列,但每个周期却只有N个独立的复值,知道其一个周期的内容即可得到其它的内容。因此,若从DFS变换的时、频域各取出一个周期,即可构造出时间和频率自变量皆为离散、有限长度的傅氏变换,这就是离散傅里叶变换(DFT)的引出思想,下面进行具体推导。
设xn是一个长度为M的有限长序列,由周期序列与有限长序列的本质联系,可以
N(N
M
)为周期将xn展开为无重叠的周期序列,即周期延拓为
nxnrN (2-3) x
r
n进行DFS变换,得到周期离散的频谱再对x
(k0,1,...,N1),代入
k(k(,))X,取kX
的主值序列
DFS反变换公式即
1nIDFSXxkN
N1
k0
keX
j
2N
kn
(2-4)
2
jnk
分析可见:在DFS正变换中,只要把一个周期内的~xn乘以对应的eN
(n0,1,...,N1)
,
~即可得任意k下的Xk;同理,在DFS反变换中,仅用Xk的一个周期的值
~(k0,1,...,N1),即可得到任意n下的xn。如果同时限制(2-3)式中的n和(2-4)式中
~
的k,使其都只在0~N1区间内取值,就得到了一个周期的xn和一个周期的Xk
间的对应关系
N1
Xk
1
xnW
n0N1k0
knN
0kN1 (2-5)
xn
j
2
XkWN
knN
0nN1 (2-6)
式中,WNeN,N为DFT变换区间的长度,上两式即称为有限长序列的离散傅里叶变换对。(2-5)式称为离散傅里叶变换,简称DFT;(2-6)式称为离散傅里叶逆变换(Inverse Discrete Fourier Transform),简称IDFT。
由上述DFT的推导过程和定义可以看出,DFT变换具有隐含周期性。一方面由于DFT
变换由DFS变换引出,另一方面由DFT定义式中的WNnk满足下述周期性
WNnkWNn(kmN)WNk(nmN) m为整数 (2-7) 使得有限长序列xn和Xk均具有周期性,即满足
N1
N1
(kmN)nN
XkmNxnmN
xnW
n0
xnW
n0N1k0
knNXkx(n)
N1
XkW
k0
(nmN)kN
xnW
knN
因此,周期序列~xn可以看作长度为N的有限长序列xn的周期延拓序列,如式 (2-3),又可表示为
~xnxnN
(2-8)
式中RNn是矩形序列,nN是余数运算表达式,即若nmNn1 (0
n1N1,m为整数看作是~xn从n0到
),则nNn1,xnN表示以N为周期的周期序列。而xn可
N1的主值区间,表示
~
x(n)x(n)RN(n) (2-9)
上述关系如图2.1所示。
同样可将Xk表示为
XkX(k)RN(k)
~
x(n)
n x
…..
…..
图2.1有限长序列及其周期延拓
上述分析同样说明:有限长序列xn的离散傅里叶变换Xk,正好是xn的周期延拓序
X(k)X((k))N
~
列~xn的离散傅里叶级数系数
~
X(k)
的主值序列
Xk
。也可以理解为,离散傅里叶变换
(DFT)是对序列的傅里叶变换(DTFT)的频域采样,运用频域采样方法同样可以推导出DFT的变换公式。
傅立叶分析: 建立以时间为自变量的‘信号’和以频率为自变量的‘频谱函数’之间的某种关系,在1822年, 由法国科学家 Fourier提出,基本思想: 任意函数可分解为无穷多个不同频率正弦信号的和, 即频谱分析。
2.2 离散FT(DFT)的用法
对常遇到的非周期序列, 有限长或无限, 只能作DTFT, 即连续频谱, X(e), 模拟在计算机上做数值计算,实际中, 把N点序列视为一周期序列的一个周期,再做DFT。X(k)只是x(n)的FT在某种程度上的近似, X(k)是x(n)频谱(DTFT)的抽样值。
周期信号可以分解成一系列正弦(余弦)信号或虚指数信号之和,即
N
jw
ft
nN
Fne
jnt
a02
NN
n
a
n1
cosnt
b
n1
n
sinnt
其中,Fn
12
12
Ane
jn
12
an
jbn
|Fn|An
bnan
或
narctan
幅度和相位
为了直观地表示出信号所含各分量的振幅An或|Fn|,随频率的变化情况,通常以角频率为横坐标,以各次谐波的振幅An或虚指数函数|Fn|的幅度为纵坐标,画出如图2和图4所示的各谐波的振幅An或|Fn|与角频率的关系图,称为周期信号的幅度(振幅)频谱,简称幅度谱。图中每条竖线代表该频率分量的幅度,称为谱线。各谱线顶点连线
的曲线(如图中原点所示)称为频谱包络线,它反映了各谐波分量幅度随频率变化的情况。
类似地,也可画出各谐波初相角n与角频率的关系图,如图3和5中各谐波初相角n与角频率的关系图,称为相位频谱,简称相位谱。如果Fn为实数,那么可用Fn的正负来表示n为0或也可把幅度谱和相位谱画在一张图上
第三章 用DFT对信号进行频谱分析
3.1 频谱分析的概述
所谓信号的频谱分析就是计算信号的傅里叶变换。连续信号与系统的傅里叶分析显然不能直接用计算机进行计算,使其应用受到限制。而DFT是一种时域和频域均离散化的变换,适合数值计算,成为分析离散信号和系统的有力工具。对连续信号和系统,可以通过时域采样,应用DFT进行频谱分析。
用DFT进行频谱分析的基本原理和方法:
已经知道单位圆上的z变换就是序列的傅里叶变换,即: X(jw)=X(z)|z=jw
如果对序列x(n)进行N点DFT,得到X(k),X(k)是在区间[0,2π]上对X(jw)的N点等间隔采样。因DFT有FFT算法,故常用DFT对有限长序列进行谱分析,实施方法如下:
首先依据频率分辨率的要求确定DFT变换区间长度 N 。频谱分析的衡量指标之一是频率分辨率,它是频谱分析中能够分辨的两个相邻频率点谱线的最小间距。在数字频率域,N 点DFT能够实现的频率分辨率是2π/N 弧度,进行频谱分析时,要求N>=2π/D (D为要求的分辨率)。为了便于使用FFT,一般取 N= 2^M.
接下来计算 N 点 DFT ,并以自变量 k 所对应的数字频率 wk=2π/N 为横坐标变量绘制频谱图。用程序运行后得下图:
3.2 MATLAB程序:
syms t;
x=sin(t)+cos(t); ezplot(x,[-30 30]); grid on;
xlabel(' 时间'); ylabel('幅值');
title(' 时域信号波形'); n=0:20; T=0.02;
y=sin(n*T)+cos(n*T); figure,subplot(2,2,1); stem(n,y); grid on;
xlabel(' n'); ylabel('x(n) ');
title('500Hz采样信号'); Y=fft(y,16); n1=0:15;
omega=2*pi/16*(n1-16/2); subplot(2,2,3);
stem(omega,abs(fftshift(Y))); grid on; xlabel('频率'); ylabel('幅值');
title('n=20时采样信号的频谱'); n=0:100; T=0.02;
y=sin(n*T)+cos(n*T); subplot(2,2,2); stem(n,y); grid on;
xlabel(' n'); ylabel(' x(n)'); title('500Hz采样信号'); Y=fft(y,128); n1=0:127;
omega=2*pi/128*(n1-128/2); subplot(2,2,4);
stem(omega,abs(fftshift(Y))); grid on; xlabel('频率');
ylabel('幅值');
title('n=100时采样信号的频谱');
第四章 吉布斯效应
4.1 吉布斯效应的定义
在x(t)的不可导点上,如果我们只取x(t)等式右边的无穷级数中的有限项作和X(t),那么X(t)在这些点上会有起伏[1]。但从信号的傅立叶变换恢复或逼近原信号时,如果原信号包含有间断点,那么,在各间断点处将出现过冲击尖峰,这种现象称为吉布斯现象。
4.2 吉布斯效应的实现
吉布斯现象是当用信号的谐波分量的和来表述具有间断点的波形时出现,并能观察。 (1)信号中频率较低的谐波分量的幅值较大,占主体地位,信号波形中所含的频率吉布斯现象越突出。
(2)当截取窗变长时,跳变峰向间断点靠近,但跳变峰值并未明显减小,跳变峰所包围的面积减小,通过matlab使这种吉布斯现象得到清楚的表现。
模拟信号x(t)=sin(10t)/t 的时域图及其频谱图界面如下:
4.3 MATLAB程序:
显示波形1
a=str2double(get(handles.edit1,'string')); c=str2double(get(handles.edit3,'string')); syms t;
x=sin(c*t)./t;
axes(handles.axes1); ezplot(x,[-a,a]); xlabel('时间'); ylabel('幅值');
axis([-a a -4 12]); grid on; %hold on;
X=fourier(x); XX=abs(X);
axes(handles.axes2); ezplot(XX,[-3*c,3*c]); xlabel('频率'); ylabel('幅值'); grid on; %hold on;
显示波形2
b=str2double(get(handles.edit2,'string')); c=str2double(get(handles.edit3,'string')); ts=-b+1; te=b-1; n=100;
t1=linspace(ts,te,n); x1=sin(c*t1)./t1; axes(handles.axes3); plot(t1,x1)
axis([-b,b,-4,12]); xlabel('时间'); ylabel('幅值'); grid on;
%hold on;
X1=abs(fft(x1,128));
fs=n/(te-ts);
f=(0:length(X1)/2-1)*fs/128*2*pi; axes(handles.axes4); plot(f,X1(1:length(X1)/2)); xlabel('频率'); ylabel('幅值'); grid on; %hold on;
第五章 栅栏效应 5.1 栅栏效应的定义
快速傅立叶变换得到的频谱是离散谱,是信号的频谱与一个窗函数的频谱做卷积后,按归一化频率分辨率等间隔频域采样的结果,它只给出频谱在离散点
2k/N(0kN1)上的值,而无法反映这些点之间的频谱内容,即使在其它点上有重要的峰值也会被忽略。这就好像在百页窗内观察窗外的景色,看到的是百叶窗窗缝内的部分景色,而无法看到被百叶窗遮挡住的部分,这就是栅栏现象。
5.2 栅栏效应的验证
设计一个离散傅立叶计算程序,计算方波的频谱。观察栅栏效应带来的计算误差。 设计如下:
利用505Hz方波信号的频谱分析说明栅栏效应所造成的频谱误差。
设定采样频率:fs=5120,MATLAB中默认的FFT计算点数为512,其离散频率点为: fi=i*fs/N=i*5120/512=10,i=0,1,2,3„,N/2
位于505HZ位置的真实谱峰被挡住看不见,看见的只是它们在相邻频率500Hz或510Hz处能量泄漏的值。
若设fs=2560Hz,则频率间隔为df=5Hz,重复上述分析步骤,这时在505 Hz位置有谱线,因此可以得到它们的精确值。
从时域看,这个条件相当于对信号进行整周期采样,实际中常用此方法来提高周期信号的频谱分析精度。
将上图中的后两个图是不同采样频率下的采样图,从图看出是不一样的,下面我们把后面的两图,即刚才离散的采样的频率图进行局部放大可以得到下面的图,由此看出栅栏效应的影响。
我们知道,N点DFT是频率区间0,2上对信号的频谱进行N点等间隔采样,而采样点之间的频谱函数值是不知道的。这就好像从(N+1)个栅栏缝隙中观看信号的频谱情况,仅得到N个缝隙中看到的频谱函数值。因此称这种现象为栅栏效应。由于栅栏效应,有可能漏掉(挡住)大的频谱分量。为了把原来被“栅栏”挡住的频谱分量检测出来,需要提高频率分辨率(用频率采样间隔F来描述,表示谱分析中能够分辨的两个频率分量的最小间隔),也就是说:间隔F越小,谱分析越接近原连续频谱Xaj,频率分辨率越高。
按照(1-10)式,F
fsN
,为使F减小,需要减小采样频率
fs
或增大采样点数N。
由于采样频率的降低会引起谱分析范围的减少或者引起频谱混叠,所以在维持fs不变的条件下。
频率分辨率可以增加采样点数N,因为NTTp,Tfs1,只有增加对信号的观察时间Tp,才能增加N。Tp和N可以按照下面两式进行选择:
N T
p
2fcF1F
(5-1)
(5-2)
增加观察时间或者采样点数最简单的办法可以采用在原序列尾部补零的方法,改变序列长度N(即改变DFT变换区间长度),从而增加了频域采样点数和采样点位置,使原先漏掉的某些频谱分量被检测出来。
界面图
5.3 matlab程序
采样程序如下: t1=0:1/5120:0.1; m1=0:10:5120; t2=0:1/2560:0.2;
m2=0:5:2560;
y1=square(2*pi*505*t1); transf1=abs(fft(y1)/256); y2=square(2*pi*505*t2); transf2=abs(fft(y2)/256); subplot(2,2,1);plot(t1,y1); title('square(2*pi*505*t1)'); subplot(2,2,3); stem(m1(1:256), transf1(1:256)); title('fs=5120'); subplot(2,2,2);
plot(t2,y2);
title('square(2*pi*505*t2)'); subplot(2,2,4); stem(m2(1:256), transf2(1:256)); title('fs=2560');
界面显示程序如下:
显示波形1
a=str2double(get(handles.edit4,'String')); t1=0:1/a:0.1; m1=0:10:a;
y1=square(2*pi*505*t1); transf1=abs(fft(y1)/256); axes(handles.axes1); stem(t1,y1);
axes(handles.axes2); stem(t1,transf1); axes(handles.axes7); stem(t1,y1);
axes(handles.axes8); stem(t1,transf1);
axis([0.0525 0.0575 0 0.5]);
显示波形2
b=str2double(get(handles.edit3,'String')); t2=0:1/b:0.1;
m2=0:5:b;
y2=square(2*pi*505*t2); transf2=abs(fft(y2)/256); axes(handles.axes3); stem(t2,y2);
axes(handles.axes4); stem(t2,transf2); axes(handles.axes5); stem(t2,y2);
axes(handles.axes6); stem(t2,transf2);
axis([0.0525 0.0575 0 0.5]);
第六章 学习心得
通过两周的数字信号处理的课设,在老师和学长的指导下,同学们围绕着各自的课题互相交流,互相探讨,不仅学习了有关MATLAB在信号处理中的知识,加深对MATLAB的理解,还对数字信号处理的信号采集和频谱分析部分重新复习了一遍,深深地感受到频谱分析在数字信号处理中的重要性。
频谱分析就是计算信号的傅里叶变换。数字信号处理频谱分析时有两个比较重要的效应,分别为吉布斯效应和栅栏效应。在MATLAB中可以很容易地将一个模拟信号的时域图用离散傅里叶变换(DFT)转换成频域图。
这次数字信号课程设计,我所做的是吉布斯效应和栅栏效应的验证。虽然我学到的东西还不是很全,更也需还没有达到老师的所希望的水平,但是在这几天的设计中,我和其他同学相互相互讨论,交换意见和建议,并且包括了基础知识的积累、理论的成型。 在这次课程设计的设计过程中,我意识到自己掌握的知识还不足,某些方面的能力还是不够。这也让我再次认识到知识的重要性,活到老,学到老,只有不断的充实自己、完善自己的知识理论体系,才能够更好的胜任自己以后的工作。而且,将理论在某平台的实现是要付出非常的努力和耐心、并不断修正错误多次试验、最后使理论和实践达成统一的过程。总而言之,在这次课程设计中, 在各方面我获得了很多,对我所学数字信号处理有很大补充。
第七章 参考文献
1、数字图像处理学 电子工业出版社 贾永红 2003
2、数字图像处理(Matlab版) 电子工业出版社 冈萨雷斯 2006 3、数字图像处理学(第二版)电子工业出版社 阮秋琦 2006 4、matlab实用教程 清华大学出版社 徐金明 2005
5、其他的数字图像处理和matlab编程方面的书籍及相关学习资料
燕山大学
课 程 设 计 说 明 书
题目:基于Matlab的信号吉布斯效应和栅栏效应的验证
学院(系):电气工程学院 年级专业: 09级仪表1班 学 号: [1**********]0 学生姓名: ********** 指导教师: *********** 教师职称: 教授 讲师
燕山大学课程设计(论文)任务书
院(系): 电气工程学院 基层教学单位:工业自动化仪表
说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
2012年 6 月 22 日
燕山大学课程设计评审意见表
摘 要
随着科技的发展,当今社会已经进入信息时代,人们每天都要接触各种各样载有信息的信号形式,如接受广播、电视信号、使用电话传送声音信号等,其目的是为了把不同形式的消息借助一定形式的信号进行表达或传递。
数字信号处理理论及其分析方法已应用于许多领域和学科中,通过功能强大的MATLAB软件与数字信号处理理论知识相互融合在一起,使我们对数字信号处理的理论知识能够有更加深厚理解,也提高了动手能力,实践并初步掌握了MATLAB的使用。 信号的数字化需要三个步骤:抽样、量化和编码。抽样是指用每隔一定时间的信号样值序列来代替原来在时间上连续的信号,也就是在时间上将模拟信号离散化。量化是用有限个幅度值近似原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。编码则是按照一定的规律,把量化后的值用二进制数字表示,然后转换成二值或多值的数字信号流。这样得到的数字信号可以通过电缆、微波干线、卫星通道等数字线路传输。在接收端则与上述模拟信号数字化过程相反,再经过后置滤波又恢复成原来的模拟信号。
根据本次课题要求,通过使用MATLAB,方便了在DFT中的繁琐的计算,并且直观形象的用计算机进行模拟仿真,通过观察图像,能够更加形象的看到栅栏效应和吉布斯效应,能够有更加形象的了解和分析。
离散傅里叶变换(DFT)理论,是数字信号处理理论和技术分析的重要基础之一,在数字信号处理及应用中有着非常重要的作用。本课程设计注重于利用MATLAB软件,根据设计要求,选择合适的参数进行频谱分析,进一步从理论和实验上分析DFT造成的栅栏效应。
关键字: 数字信号处理 频谱分析 吉布斯效应 栅栏效应
目 录
第一章:Matlab以及GUI简介
1.1 Matlab简介....................................3 1.2 GUI简介......................................3
第二章:离散傅立叶变换
2.1 傅立叶变换的定义 ..........................5 2.2 离散FT(DFT)的用法 .........................6
第三章:用DFT对信号进行频谱分析
3.1 频谱分析的概述 .......................... 7 3.2 MATLAB程序 .............................. 9 第四章:吉布斯效应
4.1 吉布斯效应的定义 ........................... 10 4.2 吉布斯效应的实现 ........................... 10 4.3 MATLAB程序 ................................ 11
第五章:栅栏效应
5.1 栅栏效应的定义 ............................. 12
5.2 栅栏效应的验证 ..............................12
5.3 MATLAB程序 ................................. 15
第六章:学习心得 ....................................16 第七章:参考文献 ....................................17
第一章 Matlab以及GUI简介 1.1 Matlab简介
MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。
1.2 GUI简介
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。
GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。
GUI的组成部分:
桌面 在启动时显示,也是界面中最底层,有时也指代包括窗口、文件浏览器在内的“桌面环境”。在桌面上由于可以重叠显示窗口,因此可以实现多任务化。一般的界面中,桌面上放有各种应用程序和数据的图标,用户可以依此开始工作。桌面与既存的文件夹构成里面相违背,所以要以特殊位置的文件夹的参照形式来定义内容。比如在微软公司的Windows XP系统中,各种用户的桌面内容实际保存在系统盘(默认为C盘):\Documents and Settings\[用户名]\桌面 文件夹里。墙纸,即桌面背景。可以设置为各种图片和各种附件,成为视觉美观的重要因素之一。
视窗 应用程序为使用数据而在图形用户界面中设置的基本单元。应用程序和数据在窗口内实现一体化。在窗口中,用户可以在窗口中操作应用程序,进行数据的管理、生成和编辑。通常在窗口四周设有菜单、图标,数据放在中央。在窗口中,根据各种数据/应用程序的内容设有标题栏,一般放在窗口的最上方,并在其中设有最大化、最小化(隐藏窗口,并非消除数据)、最前面、缩进(仅显示标题栏)等动作按钮,可以简单地对窗口进行操作。
单一文件界面 在窗口中,一个数据在一个窗口内完成的方式。在这种情况下,数据和显示窗口的数量是一样的。若要在其他应用程序的窗口使用数据,将相应生成新的窗口。因此窗口数量多,管理复杂。
多文件界面 在一个窗口之内进行多个数据管理的方式。这种情况下,窗口的管理简单化,但是操作变为双重管理。
标签 多文件界面的数据管理方式中使用的一种界面,将数据的标题在窗口中并排,通过选择标签标题显示必要的数据,这样使得接入数据方式变得更为便捷。上述中,多文件界面主要是微软视窗系统采用。而在其他环境中,通常多是单文件界面,所以无所谓单一/多文件界面的称呼问题。
菜单 将系统可以执行的命令以阶层的方式显示出来的一个界面。一般置于画面的最上方或者最下方,应用程序能使用的所有命令几乎全部都能放入。重要程度一般是从左到右,越往右重要度越低。命定的层次根据应用程序的不同而不同,一般重视文件的操作、编辑功能,因此放在最左边,然后往右有各种设置等操作,最右边往往设有帮助。一般使用鼠标的第一按钮进行操作。即时菜单(又称功能表)与应用程序准备好的层次菜单不同,在菜单栏以外的地方,通过鼠标的第二按钮调出的菜单称为“弹出菜单”。根据调出位置的不同,菜单内容即时变化,列出所指示的对象目前可以进行的操作。 图标 显示在管理数据的应用程序中的数据,或者显示应用程序本身。数据管理程序,即在文件夹中用户数据的管理、进行特定数据管理的程序的情况下,数据通过图标显示出来。通常情况下显示的是数据的内容或者与数据相关联的应用程序的图案。另外,点击数据的图标,一般可以之间完成启动相关应用程序以后再显示数据本身这两个步骤的工作。应用程序的图标只能用于启动应用程序。
按钮 菜单中,利用程度高的命令用图形表示出来,配置在应用程序中,成为按钮。应用程序中的按钮,通常可以代替菜单。一些使用程度高的命令,不必通过菜单一层层翻动才能调出,极大提高了工作效率。但是,各种用户使用的命令频率是不一样的,因此这种配置一般都是可以由用户自定义编辑。
第二章 离散傅立叶变换
2.1 傅立叶变换的定义
所谓傅里叶变换就是在以时间为自变量的“信号”与以频率为自变量的“频谱”函数之间的某种变换关系。随时间自变量形式的不同,其傅里叶变换的形式也有不同,常用的两种傅里叶变换:周期序列的离散傅里叶级数(DFS)和非周期序列的傅里叶变换(DTFT),其表示式分别为:
kDFSxXn
N1
n0
nex
j
2N
nk
(2-1)
jn
X(e
j
)DTFT[x(n)]
n
x(n)e
(2-2)
在实际工作中,当用数字计算机对信号进行频谱分析时,要求信号必须以有限长度
的离散值作为输入,而计算所得的频谱值自然也是有限、离散的。上述两种形式的傅里叶变换中,DFS变换满足时、频域自变量的离散化,但其时间变量和频率变量又同时具有周期性;DTFT变换满足时间自变量的有限长度(非周期能量有限信号),但其频率变量为连续形式。可见,这两种变换都难以实际应用。考虑到DFS变换的时、频域形式虽是周期序列,但每个周期却只有N个独立的复值,知道其一个周期的内容即可得到其它的内容。因此,若从DFS变换的时、频域各取出一个周期,即可构造出时间和频率自变量皆为离散、有限长度的傅氏变换,这就是离散傅里叶变换(DFT)的引出思想,下面进行具体推导。
设xn是一个长度为M的有限长序列,由周期序列与有限长序列的本质联系,可以
N(N
M
)为周期将xn展开为无重叠的周期序列,即周期延拓为
nxnrN (2-3) x
r
n进行DFS变换,得到周期离散的频谱再对x
(k0,1,...,N1),代入
k(k(,))X,取kX
的主值序列
DFS反变换公式即
1nIDFSXxkN
N1
k0
keX
j
2N
kn
(2-4)
2
jnk
分析可见:在DFS正变换中,只要把一个周期内的~xn乘以对应的eN
(n0,1,...,N1)
,
~即可得任意k下的Xk;同理,在DFS反变换中,仅用Xk的一个周期的值
~(k0,1,...,N1),即可得到任意n下的xn。如果同时限制(2-3)式中的n和(2-4)式中
~
的k,使其都只在0~N1区间内取值,就得到了一个周期的xn和一个周期的Xk
间的对应关系
N1
Xk
1
xnW
n0N1k0
knN
0kN1 (2-5)
xn
j
2
XkWN
knN
0nN1 (2-6)
式中,WNeN,N为DFT变换区间的长度,上两式即称为有限长序列的离散傅里叶变换对。(2-5)式称为离散傅里叶变换,简称DFT;(2-6)式称为离散傅里叶逆变换(Inverse Discrete Fourier Transform),简称IDFT。
由上述DFT的推导过程和定义可以看出,DFT变换具有隐含周期性。一方面由于DFT
变换由DFS变换引出,另一方面由DFT定义式中的WNnk满足下述周期性
WNnkWNn(kmN)WNk(nmN) m为整数 (2-7) 使得有限长序列xn和Xk均具有周期性,即满足
N1
N1
(kmN)nN
XkmNxnmN
xnW
n0
xnW
n0N1k0
knNXkx(n)
N1
XkW
k0
(nmN)kN
xnW
knN
因此,周期序列~xn可以看作长度为N的有限长序列xn的周期延拓序列,如式 (2-3),又可表示为
~xnxnN
(2-8)
式中RNn是矩形序列,nN是余数运算表达式,即若nmNn1 (0
n1N1,m为整数看作是~xn从n0到
),则nNn1,xnN表示以N为周期的周期序列。而xn可
N1的主值区间,表示
~
x(n)x(n)RN(n) (2-9)
上述关系如图2.1所示。
同样可将Xk表示为
XkX(k)RN(k)
~
x(n)
n x
…..
…..
图2.1有限长序列及其周期延拓
上述分析同样说明:有限长序列xn的离散傅里叶变换Xk,正好是xn的周期延拓序
X(k)X((k))N
~
列~xn的离散傅里叶级数系数
~
X(k)
的主值序列
Xk
。也可以理解为,离散傅里叶变换
(DFT)是对序列的傅里叶变换(DTFT)的频域采样,运用频域采样方法同样可以推导出DFT的变换公式。
傅立叶分析: 建立以时间为自变量的‘信号’和以频率为自变量的‘频谱函数’之间的某种关系,在1822年, 由法国科学家 Fourier提出,基本思想: 任意函数可分解为无穷多个不同频率正弦信号的和, 即频谱分析。
2.2 离散FT(DFT)的用法
对常遇到的非周期序列, 有限长或无限, 只能作DTFT, 即连续频谱, X(e), 模拟在计算机上做数值计算,实际中, 把N点序列视为一周期序列的一个周期,再做DFT。X(k)只是x(n)的FT在某种程度上的近似, X(k)是x(n)频谱(DTFT)的抽样值。
周期信号可以分解成一系列正弦(余弦)信号或虚指数信号之和,即
N
jw
ft
nN
Fne
jnt
a02
NN
n
a
n1
cosnt
b
n1
n
sinnt
其中,Fn
12
12
Ane
jn
12
an
jbn
|Fn|An
bnan
或
narctan
幅度和相位
为了直观地表示出信号所含各分量的振幅An或|Fn|,随频率的变化情况,通常以角频率为横坐标,以各次谐波的振幅An或虚指数函数|Fn|的幅度为纵坐标,画出如图2和图4所示的各谐波的振幅An或|Fn|与角频率的关系图,称为周期信号的幅度(振幅)频谱,简称幅度谱。图中每条竖线代表该频率分量的幅度,称为谱线。各谱线顶点连线
的曲线(如图中原点所示)称为频谱包络线,它反映了各谐波分量幅度随频率变化的情况。
类似地,也可画出各谐波初相角n与角频率的关系图,如图3和5中各谐波初相角n与角频率的关系图,称为相位频谱,简称相位谱。如果Fn为实数,那么可用Fn的正负来表示n为0或也可把幅度谱和相位谱画在一张图上
第三章 用DFT对信号进行频谱分析
3.1 频谱分析的概述
所谓信号的频谱分析就是计算信号的傅里叶变换。连续信号与系统的傅里叶分析显然不能直接用计算机进行计算,使其应用受到限制。而DFT是一种时域和频域均离散化的变换,适合数值计算,成为分析离散信号和系统的有力工具。对连续信号和系统,可以通过时域采样,应用DFT进行频谱分析。
用DFT进行频谱分析的基本原理和方法:
已经知道单位圆上的z变换就是序列的傅里叶变换,即: X(jw)=X(z)|z=jw
如果对序列x(n)进行N点DFT,得到X(k),X(k)是在区间[0,2π]上对X(jw)的N点等间隔采样。因DFT有FFT算法,故常用DFT对有限长序列进行谱分析,实施方法如下:
首先依据频率分辨率的要求确定DFT变换区间长度 N 。频谱分析的衡量指标之一是频率分辨率,它是频谱分析中能够分辨的两个相邻频率点谱线的最小间距。在数字频率域,N 点DFT能够实现的频率分辨率是2π/N 弧度,进行频谱分析时,要求N>=2π/D (D为要求的分辨率)。为了便于使用FFT,一般取 N= 2^M.
接下来计算 N 点 DFT ,并以自变量 k 所对应的数字频率 wk=2π/N 为横坐标变量绘制频谱图。用程序运行后得下图:
3.2 MATLAB程序:
syms t;
x=sin(t)+cos(t); ezplot(x,[-30 30]); grid on;
xlabel(' 时间'); ylabel('幅值');
title(' 时域信号波形'); n=0:20; T=0.02;
y=sin(n*T)+cos(n*T); figure,subplot(2,2,1); stem(n,y); grid on;
xlabel(' n'); ylabel('x(n) ');
title('500Hz采样信号'); Y=fft(y,16); n1=0:15;
omega=2*pi/16*(n1-16/2); subplot(2,2,3);
stem(omega,abs(fftshift(Y))); grid on; xlabel('频率'); ylabel('幅值');
title('n=20时采样信号的频谱'); n=0:100; T=0.02;
y=sin(n*T)+cos(n*T); subplot(2,2,2); stem(n,y); grid on;
xlabel(' n'); ylabel(' x(n)'); title('500Hz采样信号'); Y=fft(y,128); n1=0:127;
omega=2*pi/128*(n1-128/2); subplot(2,2,4);
stem(omega,abs(fftshift(Y))); grid on; xlabel('频率');
ylabel('幅值');
title('n=100时采样信号的频谱');
第四章 吉布斯效应
4.1 吉布斯效应的定义
在x(t)的不可导点上,如果我们只取x(t)等式右边的无穷级数中的有限项作和X(t),那么X(t)在这些点上会有起伏[1]。但从信号的傅立叶变换恢复或逼近原信号时,如果原信号包含有间断点,那么,在各间断点处将出现过冲击尖峰,这种现象称为吉布斯现象。
4.2 吉布斯效应的实现
吉布斯现象是当用信号的谐波分量的和来表述具有间断点的波形时出现,并能观察。 (1)信号中频率较低的谐波分量的幅值较大,占主体地位,信号波形中所含的频率吉布斯现象越突出。
(2)当截取窗变长时,跳变峰向间断点靠近,但跳变峰值并未明显减小,跳变峰所包围的面积减小,通过matlab使这种吉布斯现象得到清楚的表现。
模拟信号x(t)=sin(10t)/t 的时域图及其频谱图界面如下:
4.3 MATLAB程序:
显示波形1
a=str2double(get(handles.edit1,'string')); c=str2double(get(handles.edit3,'string')); syms t;
x=sin(c*t)./t;
axes(handles.axes1); ezplot(x,[-a,a]); xlabel('时间'); ylabel('幅值');
axis([-a a -4 12]); grid on; %hold on;
X=fourier(x); XX=abs(X);
axes(handles.axes2); ezplot(XX,[-3*c,3*c]); xlabel('频率'); ylabel('幅值'); grid on; %hold on;
显示波形2
b=str2double(get(handles.edit2,'string')); c=str2double(get(handles.edit3,'string')); ts=-b+1; te=b-1; n=100;
t1=linspace(ts,te,n); x1=sin(c*t1)./t1; axes(handles.axes3); plot(t1,x1)
axis([-b,b,-4,12]); xlabel('时间'); ylabel('幅值'); grid on;
%hold on;
X1=abs(fft(x1,128));
fs=n/(te-ts);
f=(0:length(X1)/2-1)*fs/128*2*pi; axes(handles.axes4); plot(f,X1(1:length(X1)/2)); xlabel('频率'); ylabel('幅值'); grid on; %hold on;
第五章 栅栏效应 5.1 栅栏效应的定义
快速傅立叶变换得到的频谱是离散谱,是信号的频谱与一个窗函数的频谱做卷积后,按归一化频率分辨率等间隔频域采样的结果,它只给出频谱在离散点
2k/N(0kN1)上的值,而无法反映这些点之间的频谱内容,即使在其它点上有重要的峰值也会被忽略。这就好像在百页窗内观察窗外的景色,看到的是百叶窗窗缝内的部分景色,而无法看到被百叶窗遮挡住的部分,这就是栅栏现象。
5.2 栅栏效应的验证
设计一个离散傅立叶计算程序,计算方波的频谱。观察栅栏效应带来的计算误差。 设计如下:
利用505Hz方波信号的频谱分析说明栅栏效应所造成的频谱误差。
设定采样频率:fs=5120,MATLAB中默认的FFT计算点数为512,其离散频率点为: fi=i*fs/N=i*5120/512=10,i=0,1,2,3„,N/2
位于505HZ位置的真实谱峰被挡住看不见,看见的只是它们在相邻频率500Hz或510Hz处能量泄漏的值。
若设fs=2560Hz,则频率间隔为df=5Hz,重复上述分析步骤,这时在505 Hz位置有谱线,因此可以得到它们的精确值。
从时域看,这个条件相当于对信号进行整周期采样,实际中常用此方法来提高周期信号的频谱分析精度。
将上图中的后两个图是不同采样频率下的采样图,从图看出是不一样的,下面我们把后面的两图,即刚才离散的采样的频率图进行局部放大可以得到下面的图,由此看出栅栏效应的影响。
我们知道,N点DFT是频率区间0,2上对信号的频谱进行N点等间隔采样,而采样点之间的频谱函数值是不知道的。这就好像从(N+1)个栅栏缝隙中观看信号的频谱情况,仅得到N个缝隙中看到的频谱函数值。因此称这种现象为栅栏效应。由于栅栏效应,有可能漏掉(挡住)大的频谱分量。为了把原来被“栅栏”挡住的频谱分量检测出来,需要提高频率分辨率(用频率采样间隔F来描述,表示谱分析中能够分辨的两个频率分量的最小间隔),也就是说:间隔F越小,谱分析越接近原连续频谱Xaj,频率分辨率越高。
按照(1-10)式,F
fsN
,为使F减小,需要减小采样频率
fs
或增大采样点数N。
由于采样频率的降低会引起谱分析范围的减少或者引起频谱混叠,所以在维持fs不变的条件下。
频率分辨率可以增加采样点数N,因为NTTp,Tfs1,只有增加对信号的观察时间Tp,才能增加N。Tp和N可以按照下面两式进行选择:
N T
p
2fcF1F
(5-1)
(5-2)
增加观察时间或者采样点数最简单的办法可以采用在原序列尾部补零的方法,改变序列长度N(即改变DFT变换区间长度),从而增加了频域采样点数和采样点位置,使原先漏掉的某些频谱分量被检测出来。
界面图
5.3 matlab程序
采样程序如下: t1=0:1/5120:0.1; m1=0:10:5120; t2=0:1/2560:0.2;
m2=0:5:2560;
y1=square(2*pi*505*t1); transf1=abs(fft(y1)/256); y2=square(2*pi*505*t2); transf2=abs(fft(y2)/256); subplot(2,2,1);plot(t1,y1); title('square(2*pi*505*t1)'); subplot(2,2,3); stem(m1(1:256), transf1(1:256)); title('fs=5120'); subplot(2,2,2);
plot(t2,y2);
title('square(2*pi*505*t2)'); subplot(2,2,4); stem(m2(1:256), transf2(1:256)); title('fs=2560');
界面显示程序如下:
显示波形1
a=str2double(get(handles.edit4,'String')); t1=0:1/a:0.1; m1=0:10:a;
y1=square(2*pi*505*t1); transf1=abs(fft(y1)/256); axes(handles.axes1); stem(t1,y1);
axes(handles.axes2); stem(t1,transf1); axes(handles.axes7); stem(t1,y1);
axes(handles.axes8); stem(t1,transf1);
axis([0.0525 0.0575 0 0.5]);
显示波形2
b=str2double(get(handles.edit3,'String')); t2=0:1/b:0.1;
m2=0:5:b;
y2=square(2*pi*505*t2); transf2=abs(fft(y2)/256); axes(handles.axes3); stem(t2,y2);
axes(handles.axes4); stem(t2,transf2); axes(handles.axes5); stem(t2,y2);
axes(handles.axes6); stem(t2,transf2);
axis([0.0525 0.0575 0 0.5]);
第六章 学习心得
通过两周的数字信号处理的课设,在老师和学长的指导下,同学们围绕着各自的课题互相交流,互相探讨,不仅学习了有关MATLAB在信号处理中的知识,加深对MATLAB的理解,还对数字信号处理的信号采集和频谱分析部分重新复习了一遍,深深地感受到频谱分析在数字信号处理中的重要性。
频谱分析就是计算信号的傅里叶变换。数字信号处理频谱分析时有两个比较重要的效应,分别为吉布斯效应和栅栏效应。在MATLAB中可以很容易地将一个模拟信号的时域图用离散傅里叶变换(DFT)转换成频域图。
这次数字信号课程设计,我所做的是吉布斯效应和栅栏效应的验证。虽然我学到的东西还不是很全,更也需还没有达到老师的所希望的水平,但是在这几天的设计中,我和其他同学相互相互讨论,交换意见和建议,并且包括了基础知识的积累、理论的成型。 在这次课程设计的设计过程中,我意识到自己掌握的知识还不足,某些方面的能力还是不够。这也让我再次认识到知识的重要性,活到老,学到老,只有不断的充实自己、完善自己的知识理论体系,才能够更好的胜任自己以后的工作。而且,将理论在某平台的实现是要付出非常的努力和耐心、并不断修正错误多次试验、最后使理论和实践达成统一的过程。总而言之,在这次课程设计中, 在各方面我获得了很多,对我所学数字信号处理有很大补充。
第七章 参考文献
1、数字图像处理学 电子工业出版社 贾永红 2003
2、数字图像处理(Matlab版) 电子工业出版社 冈萨雷斯 2006 3、数字图像处理学(第二版)电子工业出版社 阮秋琦 2006 4、matlab实用教程 清华大学出版社 徐金明 2005
5、其他的数字图像处理和matlab编程方面的书籍及相关学习资料