基于MATLAB的GMSK系统的设计仿真精品资料.doc
课程设计报告题 目:基于MATLAB的GMSK系统的设计仿真 学生姓名: 学生学号: 系 别: 专 业: 届 别: 指导教师: 基于MATLAB的GMSK系统的设计仿真1课程设计的任务与要求1.1课程设计的任务(1)加深对GMSK基本理论知识的理解。(2)培养独立开展科研的能力和编程能力。(3)通过SIMULINK对GMSK调制系统进行仿真。1.2 课程设计的要求(1)观察基带信号和解调信号波形。(2)观察已调信号频谱图。(3)分析调制性能和BT参数的关系。(4)与MSK系统的对比。1.3 课程设计的研究基础调制原理图如图1,图中滤波器是高斯低通滤波器,它的输出直接对VCO进行调制,以保持已调包络恒定和相位连续。图1 GMSK调制原理图为了使输出频谱密集,前段滤波器必须具有以下待性:1.窄带和尖锐的截止特性,以抑制FM调制器输入信号中的高频分量;2.脉冲响应过冲量小,以防止FM调制器瞬时频偏过大;3.保持滤波器输出脉冲响应曲线下面积对应pi/2的相移。调制指数为1/2。前置滤波器以高斯型最能满足上述条件,这也是高斯滤波器最小移频键控(GMSK)的由来。GMSK本是MSK的一种,而MSK又是是FSK的一种,因此,GMSK检波也可以采用FSK检波器,即包络检波及同步检波。而GMSK还可以采用时延检波,但每种检波器的误码率不同。我们在构建数字通信系统的模型后,利用计算机仿真作为分析手段,对在不同的通信环境下设计方案的误码性能进行定量分析,用来对各调制,解调方案性能进行评估。由于GMSK信号具有良好的频潜效率、以及恒包络性质,因而广泛的应用于移动通信系统。高斯最小频移键控(GMSK)由于带外辐射低因而具有很好的频谱利用率,其恒包络的特性使得其能够使用功率效率高的C类放大器。这些优良的特性使其作为一种高效的数字调制方案被广泛的运用于多种通信系统和标准之中。如上所述,GMSK有着广泛的应用。因此,从本世纪80年代提出该技术以来,广大科研人员进行了大量的针对其调制解调方案的研究。GMSK非相干解调原理图如图2,图中是采用FM鉴频器(斜率鉴频器或相位鉴频器)再加判别电路,实现GMSK数据的解调输出。图2 GMSK解调原理图2 GMSK系统设计2.1 信号发生模块因为GMSK信号只需满足非归零数字信号即可,本设计中选用(Bernoulli Binary Generator)来产生一个二进制序列作为输入信号。图3 GMSK信号产生器该模块的参数设计这只主要包括以下几个。其中probability of a zero 设置为0.5表示产生的二进制序列中0出现的概率为0.5;Initial seed 为61表示随机数种子为61;sample time为1/1000表示抽样时间即每个符号的持续时为0.001s。当仿真时间固定时,可以通过改变sample time参数来改变码元个数。例如仿真时间为10s,若sample time为1/1000,则码元个数为10000。如图4所示。图4 Bernoulli Binary Generator参数设置2.2 调制解调模块图5 GMSK调制解调模块GMSK Modulator Baseband为GMSK基带调制模块,其input type参数设为Bit表示表示模块的输入信号时二进制信号(0或1)。BT product为0.3表示带宽和码元宽度的乘积。其中B是高斯低通滤波器的归一化3dB带宽,T是码元长度。当B·T=时,GMSK调制信号就变成MSK调制信号。BT=0.3是GSM采用的调制方式。Plush length则是脉冲长度即GMSK调制器中高斯低通滤波器的周期,设为4。Symbol prehistory表示GMSK调制器在仿真开始前的输入符号,设为1。Phase offset 设为0,表示GMSK基带调制信号的初始相位为0。Sample per symbol为1表示每一个输入符号对应的GMSK调制器产生的输出信号的抽样点数为1。如图6所示。AWGN Channel为加性高斯白噪声模块,高斯白噪声信道的Mode参数设置为Signal to noise(SNR),表示信道模块是根据信噪比SNR确定高斯白噪声的功率,这时需要确定两个参数:信噪比和周期。而将SNR参数设为一个变量xSNR是为了在m文件中编程,计算不同信噪比下的误码率,改变SNR即改变信道信噪比。如图7所示。GMSK Demodulator Baseband是GMSK基带解调器。其前六项参数与GMSK调制器相同,并设置的值也相同。最后一项为回溯长度Traceback Length,设为变量Tracebacklength,在m文件通过改变其值,可以观察回溯长度对调制性能的影响。如图8所示。图6 GMSK Modulator Baseband参数设置图7 AWGN Channel参数设置图8 GMSK Demodulator Baseband参数设置2.3 误码率计算模块图9 误码率计算模块Receive dely(接收端时延)设置为回溯长度加一,表示接收端输入的数据滞后发送端数据TracebackLength+1个输入数据;Computation delay(计算时延)设为0,表示错误率统计模块不忽略最初的任何输入数据。Computation mode(计算模式)设置为Entire frame(帧计算模块),表示错误率统计模块对发送端和接收端的所有数据进行统计。Output data(输出数据)设为workspace,表示竟统计数据输出到工作区。Variable name (变量名)则是设置m文件中要返回的参数的名称,设为xErrorRate。如图10所示。 图10 Error Rate Calculation参数设置2.4 波形观察模块2.4.1调制、解调信号观察模块因为GMSK调制信号是一个复合信号,所以只用示波器(Scope)无法观察到调制波形,所以在调制信号和示波器间加一转换模块Complex to magnitude-angle将调制信号分别在幅度和相角两方面来观察。图11调制信号观察模块将Complex to magnitude-angleoutput的output参数设为magnitude and angle,表示同时输出调制信号的幅度和相角。示波器scope1的number of axes 为2表明有纵坐标个数为2;time range表示时间轴的显示范围,设为auto,表示时间轴的显示范围为整个仿真时间段。Tick Tabels 设为bottom axis only时,只显示各个纵坐标以及最下面的横坐标的标签。如图12所示。图12 Complex to Magnitude-Angle参数设置图13 解调信号观察模块2.4.2 调制信号频谱观察模块图14 GMSK调制信号频谱观察模块设置了坐标Y的范围为0到7,X的范围为-FS,FS,Amplitude scaling表示幅度计算,选择一般模式即以V为单位进行计算。但Y坐标标记Y-axis title设为magnitude,dB转换为dB形式。如图15所示。图15 Spectrum Scope参数设置2.4.3眼图观察模块图16 GMSK调制解调信号眼图观察模块Offset(sample)参数表示MATLAB在开始绘制眼图之前应该忽略的抽样点的个数。Symbols per trace表示每径符号数,每条曲线即成为一个“径”。Traces displayed 则是要显示的径数。New traces per display 是每次重新显示的径的数目。如图17所示。图17 Discrete-Time Eye Diagram Scope参数设置2.4.4星座图观察模块图18 GMSK调制解调星座图观察模块星座图展示了信号在空间的排列分步,即在噪声环境下信号之间的最小距离。2.4.5 GMSK系统设计仿真模型图图19 GMSK系统设计仿真模型图3 GMSK系统与MSK系统的性能比较3.1 MSK系统设计最小频移键控(MSK)是恒定包络调制技术,是2FSK的改进调制方式,它具有波形连续,相位稳定,带宽最小并且严格正交的特点。以下是MSK各个系统的模块介绍。其参数设置参照GMSK参数设置。3.1.1 信号发生模块图20 MSK信号产生器3.1.2 调制解调模块图21 MSK调制解调模块3.1.3 误码率计算模块图22 误码率计算模块3.1.4 MSK系统设计仿真模型图图23 MSK系统设计仿真模型图3.2 GMSK系统设计图24 GMSK系统设计图3.3 GMSK调制仿真误码性能的M文件代码图25 GMSK调制仿真误码性能的M文件3.4 GMSK系统与MSK系统的性能比较的M文件代码图26 GMSK系统与MSK系统的性能比较的M文件4 GMSK系统仿真4.1 仿真系统仿真是用模型代替实际系统进行试验。它是在不破坏真实系统环境的情况下,为研究系统的特性而构造并运行这种真实系统的模型的方法。仿真工作的目的就是在合理的构造系统模型的基础上,采用有效的方案对系统的性能进行评估。通常我们可以根据公式进行计算;利用计算机进行波形级的仿真;或者通过用硬件构成样机进行测量来对通信系统性能进行评估。用基于公式的方法可以透彻的了解设计参数和系统的性能之间的关系。但是,除了一些理想的和过分简化的情况外,仅用解析的方法评估通信系统的性能是非常困难的。根据设计样机时得到的测量数。据评沽性能当然是准确可信的方法。但是,其缺点是费时、开销大、不灵活。这在早期的设计阶段也显得有些不合适。而将基于计算机仿真的方法用于性能评价,几乎可以按任意详细程度的要求建立模型。而且可以很容易的将数学和经验的模型结合起来,把测量的器件的特性和实际信号都组合到分析和设计当中去。虽然在许多情况下,计算机仿真是系统分析的一种较好的方法,特别是大多数具有随机性的复杂系统无法用准确的数学模型并用解析方法求解时,仿真通常成为解决这类问题的有力工具。但是,仿真在实际应用中还仍然不足之处。诸如,构造和确认仿真模型需要耗费较多的时间:在初步设计中,确认复杂模型,可能会很困难;系统模型中往往有不少随机变量,而在系统仿真时,受到样本量的限制,使得仿真的精度受到限制。这些缺点,只有通过仔细的选择建模和仿真技术才能予以缓解。本文采取MATLAB的Simulink仿真。4.2 GMSK调制与解调波形图27 GMSK调制信号幅度和相角波形由于调制信号是一个复合信号,不能直接由示波器观察,通过一complex to magnitude-angle模块将调制信号分为幅度和相角两个变量来观察。通过幅度的波形(上)和相角波形(下)验证了GMSK的幅度不变,由相角波形来看,相角连续,与理论符合。所以图形基本正确。由图28中基带信号(上)与解调信号波形(下)比较可得,其由起始码元到最后一个码元,发现调制信号波形从第四个码元开始与基带信号完全符合,说明系统的调制性能较好,基本实现了解调的目的将调制信号还原为基带信号。图28 GMSK基带信号与解调信号图29 BT=0.3的GMSK调制信号频谱简单的说,任何信号(满足一定的数学条件),都可以通过傅里叶变换而分解成一个直流分量和若干个正弦信号的和。每个正弦信号都有自己的频率和幅值,这样,以频率值作横轴,以幅值作纵轴,把上述若干个正弦信号的幅值画在其所对应的频率上,就做出了信号的幅频分布图,也就是所谓频谱图。图30 BT=0.5的GMSK调制信号频谱实验所得频谱图的主瓣与理论频谱近似,只是顶端稍显尖锐,不够圆滑。图31 BT=0.9的GMSK调制信号频谱比较图29、图30和图31中频谱,发现BT=0.3与BT=0.9得GMSK调制频谱,并无明显差异,与GMSK调制信号的频谱随着BT的减小而变得紧凑起来的理论结果不符合,从而验证可能是系统的某些参数设置不太合理,导致得不到正确的结果。4.3 GMSK调制信号眼图图32 BT=0.1时GMSK调制信号眼图眼图的“眼睛”张开的大小反映着码间串扰的强弱。眼睛张的越大,且眼图越端正,表示码间串扰越小;反之表示码间串扰越大。当存在噪声时,噪声将叠加在信号上,观察到的眼图的线迹会变得模糊不清。若同时存在码间串扰,“眼睛”将张开得更小。与无码间串扰时的眼图相对比,原来清晰端正的细线迹,变成了比较模糊的带状线,而且很不端正。噪声越大,线迹越宽,越模糊;码间串扰越大,眼图越不端正。眼图对于展示数字信号传输系统的性能提供了很多有用的信息:可以从中看出码间串扰的大小和噪声的强弱,有助于直观地了解码间串扰和噪声的影响,评价一个基带系统的性能优劣;可以指示接受滤波器的调整,以减少码间串扰。(1)最佳抽样时刻应在“眼睛”张开最大的时刻。(2)对定时误差的灵敏度可以由眼图斜边的斜率决定。斜率越大,对定时误差就越敏感。(3)在抽样时刻上,眼图上下两分支阴影区的垂直高度,表示最大信号畸变。(4)对于利用信号过零点取平均来得到定时信息的接受系统,眼图倾斜分支与横轴相交的区域的大小,表示零点位置的变动范围,这个变动范围的大小对提取定时信息有重要的影响。分析:由图中混乱的线条可知,BT=0.1时,眼图“眼睛”睁开很小,失真严重,系统码间串扰较大。图33 BT=0.3时GMSK调制信号眼图分析:由图中混乱的线条可知,BT=0.3时,眼图“眼睛”睁开比图32中大,但存在过零点失真,仍然存在码间串扰,但比BT=0.1时好得多。图34 BT=0.9时GMSK调制信号眼图分析:与图33,34相比较,图34中眼图最为清晰,眼睛睁开程度也较大,且眼图端正,说明码间串扰较小。综合上述分析,可知BT值越小,码间串扰越大,这也是GMSK体制的缺点。4.4 GMSK基带信号星座图GMSK基带信号星座图如下图所示,分别为信噪比等于16及28时的星座图。在通信科技中星座图展示了信号在空间的排列分步,即在噪声环境下信号之间的最小距离。星座图对于判断调制方式的误码率有很直观的效用。并且,由于频率调制时,其频率分量始终随着基带信号的变化而变化,故而其基向量也是不停的变化,而且,此时在信号空间中的分量也为一个确定的量。所以,对于频率调制一般不讨论其星座图。由图可以发现信噪比越大信号在空间的排列分布越紧凑。图35 SNR=16时GMSK基带信号星座图图36 SNR=28时GMSK基带信号星座图4.5 GMSK系统误码率曲线在BT=0.3、0.5时,对系统误码率进行仿真。当BT=0.3时,既可以使频域带宽很窄,时域持续时间适当,又使时域信号容易实现。图37 BT=0.3和BT=0.5 GMSK系统误码率曲线仿真结果表明,系统在BT=0.5时的误码率要低于BT=0.3时的误码率。这表明GMSK调制信号的频谱随着BT的减小而变得紧凑的时候,GMSK调制信号的误码性能却变得越来越差。可见,GMSK频谱特性的改善是以误码率性能的下降为代价的。 所以,在使用GMSK调试方式的时候,要同时考虑频谱和误码性能要求,选取适当的BT值。BT=0.3是个经验数据,常用于实际工程。当然GMSK信号误码率不仅取决于信噪比,还与GMSK调制器参数Sample per symbol以及GMSK解调器参数Tracebacklength有关。增大这两个参数值,其误码率将会降低。适当改变这些参数并比较误码率性能的变化,从而弄清实际GMSK系统参数的确定依据。通过仿真实验,可以对通信系统的建立、通信理论的深入分析研究起到很好的效果。4.6 不同BT参数下的GMSK与MSK比较图38 BT=0.2的GMSK与MSK比较从图中可以看出,BT=0.2的性能比BT=0.4的差;BT=0.4的曲线比较接近MSK曲线;MSK曲线的性能较优。图39 BT=0.4的GMSK与MSK比较从原理上说,GMSK是MSK的改进,GMSK频谱在主瓣以外比MSK衰减得更快,而邻路干扰小。但是,GMSK信号的频谱特性的改善是通过降低误码率性能换来的。前置滤波器的带宽越窄,即BT值越小,输出功率频谱就越紧凑,误码率性能就变得越差。当BT趋于无穷时,GMSK就蜕变为MSK。虽然,图中只比较了BT=0.2和BT=0.4的曲线,但从趋势上来看,BT的值越大,其曲线将越接近MSK曲线。5总结我们在构建数字通信系统的模型后,利用计算机仿真作为分析手段,对在不同的通信环境下设计方案的误码性能进行定量分析,用来对各调制,解调方案性能进行评估。对GMSK良好的性能有了更感性的认识。在本次专业课程设计中第一次接触到SimuLink ,刚开始是一头雾水毫无头绪。后来经过资料查阅逐渐了解了SimuLink是MATLAB提供的用于对动态系统进行建模、仿真和分析的工具包。设计中要求用SimuLink搭建GMSK调制与解调模块、计算误码率,并且绘制信噪比误码率曲线。第一星期内,主要进行了资料查询及建模任务,先将各模块参数均设为常数,对调制解调波形进行观察,分析器实际波形与理论波形间的差距以及产生误差的原因。依次采用分步进行的方式,逐步实现系统所需各个功能。调试过程采用的也是相同的方法,每搭建一个功能模块就先进行仿真,调试待得到满意结果后再进行下一功能模块的搭建和调试。并在不断出现错误的过程中学会了应用MATLAB的系统帮助。整个专业课程设计中遇到的最大问题就是FFT频谱仪的参数设置及仿真参数的设置,总是solver options得选择时出问题,把握不好固定步长和可变步长的选择,以及固定步长时连续求解器的选择。经实践证明,GMSK的调制与解调因选择固定步长Fixed-step,由于传输的是数字信号,所以选择离散求解器(discrete solver)。设计中主要研究GMSK的调制特性,通过不同信噪比时的误码率绘制误码率曲线分析与比较为信号选择合适的调制、解调方式。尽管本设计能完成调制信号频谱、眼图及波形观察以及误码率曲线的绘制,但由于频谱仪参数设置方面的问题,使得频谱图与理想形态有所差别,有待改进。应用simulink 进行仿真大大的减少了电路仿真的繁琐,其中每个模块都包含几个电路元件,减少了电路连接时的麻烦,电路连线也更清晰,而且只需改变各参数即可观察电路的特性,操作简单而且所得结果也比较理想。外观看起来也更为美观。三周的专业课程设计让人受益匪浅,在要感谢我的指导老师和搭档,有他们的帮助才顺利完成任务。参考文献1 李永忠.现代通信原理与技术M.北京:国防工业出版社, 2010.5 2 樊昌信,曹丽娜.通信原理M.北京:国防工业出版社,20063 薛定宇,陈阳泉.基于MATLAB/Simulink的系统仿真技术与应用M.北京:清华大学出版社,2011.24 刘思峰,方志耕,朱建军,沈洋.系统建模与仿真M.北京:清华大学出版社,2012 附录GMSK误码率作图M文件源程序xSampleTime=1/10000;xSimulationTime=10;xInitialSeed=61;xTracebackLength=4;x=0:10;y1=x;y2=x;bt=0.3;for i=1:length(x) xSNR=x(i); sim ('GMSK'); y1(i)=xErrorRate(1);endbt=0.5;for i=1:length(x) xSNR=x(i); sim ('GMSK'); y2(i)=xErrorRate(1);endsemilogy(x,y1,'b:*',x,y2,'r-');xlabel('SNR(dB)')ylabel('Symbol Error Rate')legend('bt=0.3','bt=0.5')GMSK,MSK误码率比较作图M文件源程序xInitialSeed=67;xTracebackLength=4;Rb=10000;x=0:15;y1=x;y2=x;xSamplesPerSymbol=2;bt=0.4;for i=1:16 xSNR=x(i); sim ('GMSK'); y1(i)=xErrorRate(1);endfor i=1:16 xSNR=x(i); sim('MSK'); y2(i)=xErrorRate(1);endsemilogy(x,y1,'b:*',x,y2,'r-');xlabel('SNR(dB)')ylabel('Symbol Error Rate')legend('GMSK','MSK)指导教师评语成绩评定指导教师签字:年 月 日答辩小组评语成绩评定答辩小组签字:年 月 日附录资料:不需要的可以自行删除各类滤波器的MATLAB程序一、 理想低通滤波器IA=imread('lena.bmp');f1,f2=freqspace(size(IA),'meshgrid');Hd=ones(size(IA);r=sqrt(f1.2+f2.2);Hd(r>0.2)=0;Y=fft2(double(IA);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=ifft2(Ya);figuresubplot(2,2,1),imshow(uint8(IA);subplot(2,2,2),imshow(uint8(Ia);figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 二、理想高通滤波器IA=imread('lena.bmp');f1,f2=freqspace(size(IA),'meshgrid');Hd=ones(size(IA);r=sqrt(f1.2+f2.2);Hd(r<0.2)=0;Y=fft2(double(IA);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya);figuresubplot(2,2,1),imshow(uint8(IA);subplot(2,2,2),imshow(uint8(Ia);figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 三、 Butterworth低通滤波器IA=imread('lena.bmp');f1,f2=freqspace(size(IA),'meshgrid');D=0.3;r=f1.2+f2.2;n=4;for i=1:size(IA,1) for j=1:size(IA,2) t=r(i,j)/(D*D); Hd(i,j)=1/(tn+1); endendY=fft2(double(IA);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya);figuresubplot(2,2,1),imshow(uint8(IA);subplot(2,2,2),imshow(uint8(Ia);figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 四、 Butterworth高通滤波器IA=imread('lena.bmp');f1,f2=freqspace(size(IA),'meshgrid');D=0.3;r=f1.2+f2.2;n=4;for i=1:size(IA,1) for j=1:size(IA,2) t=(D*D)/r(i,j); Hd(i,j)=1/(tn+1); endendY=fft2(double(IA);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya);figuresubplot(2,2,1),imshow(uint8(IA);subplot(2,2,2),imshow(uint8(Ia);figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 五、 高斯低通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');f1,f2=freqspace(size(IA),'meshgrid');D=100/size(IA,1);r=f1.2+f2.2;Hd=ones(size(IA);for i=1:size(IA,1) for j=1:size(IA,2) t=r(i,j)/(D*D); Hd(i,j)=exp(-t); endendY=fft2(double(IA);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya);figuresubplot(2,2,1),imshow(uint8(IA);subplot(2,2,2),imshow(uint8(Ia);figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 六、 高斯高通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');f1,f2=freqspace(size(IA),'meshgrid');%D=100/size(IA,1);D=0.3;r=f1.2+f2.2;for i=1:size(IA,1) for j=1:size(IA,2) t=r(i,j)/(D*D); Hd(i,j)=1-exp(-t); endendY=fft2(double(IA);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya);figuresubplot(2,2,1),imshow(uint8(IA);subplot(2,2,2),imshow(uint8(Ia);figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 七、 梯形低通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');f1,f2=freqspace(size(IA),'meshgrid');%D=100/size(IA,1);D0=0.1;D1=0.4;r=sqrt(f1.2+f2.2);Hd=zeros(size(IA);Hd(r<D0)=1;for i=1:size(IA,1) for j=1:size(IA,2) if r(i,j)>=D0 & r(i,j)<=D1 Hd(i,j)=(D1-r(i,j)/(D1-D0); end endendY=fft2(double(IA);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya);figuresubplot(2,2,1),imshow(uint8(IA);subplot(2,2,2),imshow(uint8(Ia);figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 八、 梯形高通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');f1,f2=freqspace(size(IA),'meshgrid');%D=100/size(IA,1);D0=0.1;D1=0.4;r=sqrt(f1.2+f2.2);Hd=ones(size(IA);Hd(r<D1)=0;for i=1:size(IA,1) for j=1:size(IA,2) if r(i,j)>=D0 & r(i,j)<=D1 Hd(i,j)=(D0-r(i,j)/(D0-D1); end endendY=fft2(double(IA);Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya);figuresubplot(2,2,1),imshow(uint8(IA);subplot(2,2,2),imshow(uint8(Ia);figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 九、 用其他方法编写的理想低通、理想高通、Butterworth低通、同态滤波程序1、 理想低通i1=imread('lena.bmp');i2=imnoise(i1,'salt & pepper',0.1);f=double(i2);k=fft2(f);g=fftshift(k);N1,N2=size(g);d0=50;u0=floor(N1/2)+1;v0=floor(N2/2)+1;for i=1:N1 for j=1:N2 d=sqrt(i-u0)2+(j-v0)2); if d<=d0 h=1; else h=0; end y(i,j)=g(i,j)*h; endendy=ifftshift(y);E1=ifft2(y);E2=real(E1);figuresubplot(2,2,1),imshow(uint8(i1);subplot(2,2,2),imshow(uint8(i2);subplot(2,2,3),imshow(uint8(E2); 2、 理想高通i1=imread('lena.bmp');i2=imnoise(i1,'salt & pepper',0.1);f=double(i2);k=fft2(f);g=fftshift(k);N1,N2=size(g);n=2;d0=10;u0=floor(N1/2)+1;v0=floor(N2/2)+1;for i=1:N1 for j=1:N2 d=sqrt(i-u0)2+(j-v0)2); if d<=d0 h=0; else h=1; end y(i,j)=g(i,j)*h;endendy=ifftshift(y);E1=ifft2(y);E2=real(E1);figuresubplot(2,2,1),imshow(uint8(i1);subplot(2,2,2),imshow(uint8(i2);subplot(2,2,3),imshow(uint8(E2); 3、 Butterworth低通i1=imread('lena.bmp');i2=imnoise(i1,'salt & pepper',0.1);f=double(i2);k=fft2(f);g=fftshift(k);N1,N2=size(g);n=2;d0=50;u0=floor(N1/2)+1;v0=floor(N2/2)+1;for i=1:N1 for j=1:N2 d=sqrt(i-u0)2+(j-v0)2); h=1/(1+(d/d0)(2*n); y(i,j)=g(i,j)*h; endendy=ifftshift(y);E1=ifft2(y);E2=real(E1); figuresubplot(2,2,1),imshow(uint8(i1);subplot(2,2,2),imshow(uint8(i2);subplot(2,2,3),imshow(uint8(E2); 4、 同态滤波I=rgb2gray(imread('fabric00.bmp');M,N=size(I);T=double(I);L=lo