1、 基于 MATLAB 的 MSK 调制解调实现 第 1 页 共 15 页基于 MATLAB 的 MSK 调制解调实现摘 要 通过这次课程设计熟悉 MATLAB 中 M 文件的使用方法,并在掌握 MSK 调制解调原理的基础上,编写出 MSK 调制解调程序。绘制出 MSK 信号解调前后在时域和频域中的波形,并观察解调前后频谱有何变化以加深对 MSK 信号解调原理的理解。对信号叠加噪声,并进行解调,绘制出解调前后信号的时频波形,改变噪声功率进行解调,分析噪声对信号传输造成的影响。该课程设计使用的平台为 MATLAB,当输入随机序列后能够得到正确的仿真结果。同时课本上的理论识得到验证。关键词 时频波形
2、;M 文件;MATLAB7.1;调制解调1 引 言本课程设计主要用于 MSK 信号的调制与解调,同时进一步了解 MSK 信号的的解调调制原理以及其性能。再次基础上进一步对信号叠加噪声,并绘制相应波形,同时进行分析。1.1 课程设计目的利用 MATLAB 集成环境下的 M 文件,编写程序来实现 MSK 的调制解调,并绘制出解调前后的时域和频域波形及叠加噪声时解调前后的时频波形,根据运行结果和波形来分析该解调过程的正确性及信道对信号传输的影响。通过这次课程设计进一步加深了我对最小二进制相移键控(MSK)调制解调性能的理解与掌握,同时将课堂上学到的理论知识用于实践。增强了我在模拟仿真方面的能力,为以
3、后系统开发和通信系统仿真打下了良好的基础。1.2 课程设计要求通过课程设计,掌握 M 文件的使用,同时进一步加深 MSK 调制解调的原理,在此基础上编写出 MSK 调制解调的程序。并绘制出 MSK 信号解调前后在时域和频域中基于 MATLAB 的 MSK 调制解调实现 第 2 页 共 15 页 的波形,观察解调前后频谱有何变化以加深对 MSK 信号解调原理的理解。通过这一些之后再加上噪声,对信号解调,并绘制出解调前后信号的时频波形,改变噪声功率进行解调,分析噪声对信号传输造成的影响。1.3 课程设计步骤先定义 MSK 输入信号的参数然后用 dmod 函数做输入的调制,之后画相应的频谱图。再用
4、dedmod 做解调输出。然后加入噪声,再进行解调输出。1. 定义载波频率 Fs,输出信号频率 Fd,采样频率 Fs。2设置输入信号 X,同时做信号的调制。3. 画出相应的波形图。4. 做输出信号的解调波形,同时画解调波形图。5. 加入高斯白噪声。再进行信号的解调输出,画相应的波形。6. 对结果进行比较分析。1.4 课程设计平台本课程设计中应用 M 文件设计 MSK 信号调制解调程序。所以在本课程设计中有必要对 MATLAB 进行简要的描述。 MATLAB语言是当今国际上科学界最具影响力、也是最具活力的软件。它具有强大的数学运算能力、方便实用的绘图功能及语言的高度集成性。MATLAB 是矩阵实
5、验室(Matrix Laboratory)之意。MATLAB除具备卓越的数值计算能力外,它还提供了专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能。MATLAB的出现使得通信系统的仿真能够用计算机模拟实现,免去构建实验系统的不便,而且操作十分简便,只需要输入不同的参数就能得到不同情况下系统的性能,而且在结果的观测和数据的存储方面也比传统的方式有很多优势。因而MATLAB 在通信仿真领域得到越来越多的应用。MATLAB的一大特点是提供了很多专用的工具箱和模块库,例如通信工具箱和模块库、数字信号处理工具箱和模块库、控制工具箱和模块库等,MATLAB在这些工具箱和模块库中提供了很多常用的
6、函数和模块,使得仿真更容易实现。在本课程设计里,我们主要利用 MATLAB 中的 M 文件实现 MSK 解调器的设计,对解调前后波形进行比较,绘制时域波形。基于 MATLAB 的 MSK 调制解调实现 第 3 页 共 15 页 2 MSK 调制解调原理MSK 信号是一种包络恒定、相位连续、带宽最小并且严格正交的 2FSK 信号,其波形如图 2-1 所示。图 2-1 MSK 信号的波形图2.1 MSK 基本原理MSK信号是一种相位连续、包络恒定并且占用带宽最小的二进制正交FSK 信号。它的第k个码元可以表示为:(2-1))( kksk tTatwts2cokTt1式中, 为视在角载频; ;T为第
7、k 个码元确定的初始相位。ssfw21k由上式可以看出,当 时,码元频率 等于 ;当 时,码元ka1ffs4/1ka频率 等于 。故 和 的距离等于 。这是2FSK信号最小频率间隔。0fTfs4/11f02/MSK信号具有特点如下:MSK 信号是正交信号; 其波形在码元间是连续的;其包络是恒定不变的;其附加相位在一个码元持续时间内线性地变化 ;2/调制产生的频率偏移等于 Hz;在一个码元持续时间内含有的载波周期数等于T4/11/4的整数倍。2.2 MSK 正交表示法式(2-1)可以用频率为 的两个正交分量表示。将式(2-1)进行三角公式变换,得到:sf基于 MATLAB 的 MSK 调制解调实
8、现 第 4 页 共 15 页 (3-1)twTtqtwTtpts skskk in2co2)( kTtk1式中, (3-2)1kkcokka式(2-2 )表示,此 MSK 信号可以分解为同相分量( I)和正交分量(Q )两部分。2.3 MSK 信号的调制 由式(2-2 )可知,MSK 信号可以用两个正交的分量表示。根据该式构成 的 MSK信号的产生方框图如图 2-2 所示。移相/2振荡 sf带通滤波kp)2/cos(Ttpk)2/sin(Ttqk)2/cos(Tt振荡f4/1)2/sin(Ttkqtwstwsi移相 /2twTtqskin)2/i(twTtpskco)2/cs(kb串/并变换差
9、分编码 MSK信号图 2-2 MSK 调制原理图2.4 MSK 信号的解调由于 MSK 信号是最小二进制 FSK 信号,所以它可以采用解调 FSK 信号的相干法和非相干法解调。图 2-3 是 MSK 信号的解调原理框图。基于 MATLAB 的 MSK 调制解调实现 第 5 页 共 15 页 载波提取90相移积分判决积分判决抽样保持抽样保持模 2乘MSK信号 twsco- tsin2iT,(2i+1)T(2i-1)T,(2i+1)Tpq解调输出图 2-3 MSK 信号的解调原理图3 仿真实现过程3.1 MSK 信号的产生因为 MSK 信号可以用两个正交的分量表示:(k-1)TstkTstwTtq
10、twTtpts sSkcskk in2sio2c)( 式中:右端第 1 项称作同相分量,其载波为 ;第 2 项称作正交分量,其载波为tco。twcsin在仿真时先设置输入信号的参数:载波频率 Fc 调制后,数字信号速率 Fd,模拟信号采样率 Fs。之后产生要调制的随机数字信号 x;然后用 dmod 函数进行调制,产生调制信号。dmod 函数是 MATLAB 中一个常用来进行信号调制的函数,它后面的参数包括被调制信号,载波信号的频率,输出信号的速率以及采样速率和所进行调制的函数。部分程序代码和仿真图如下所示:M=2; %定义输入随机信号的参数Fc=20; %载波信号的频率 Fc为20;Fd=10
11、; %输出信号的速率Fd为10;Fs=200; %采样速率 Fs为200;基于 MATLAB 的 MSK 调制解调实现 第 6 页 共 15 页 x=randint(1,10000); %产生随机的输入序列y=dmod(x,Fc,Fd,Fs,msk); %对用dnod函数对输入的随机序列进行调制图3-1 MSK调制信号的波形由调制波形图可以看出MSK的调制信号特性与2FSK 调制信号的特性非常的相似,即:当输入信号为“1”时,调制后的波形比输入信号为“0” 时的波形要密。同时MSK信号的包络是恒定的,相位则是连续的。带宽相对于一般的2FSK信号要小,而且正交。3.2 MSK 解调实现由于MSK
12、 信号是最小二进制FSK 信号,所以它可以采用解调FSK信号的相干法和非相干法解调。在进行程序仿真时,用ddemod函数进行调制信号的解调。同时画出解调前后的时域与频域的波形图。在画频域的波形图时先对已调信号与解调信号进行DTFT变换,之后画出相应的波形。ddemod函数是与dmod函数相对应,用来对已调信号进行解调的。其后面的参数与dmod函数后的一模一样。部分程序与仿真波形图如下所示:z=ddemod(y,Fc,Fd,Fs,msk); %对调制后的MSK信号进行解调基于 MATLAB 的 MSK 调制解调实现 第 7 页 共 15 页 图3-2 MSK信号的解调波形由解调信号的时域波形可以
13、看出,解调后的波形与原始输入信号的波形完全一致。同时不难发现解调后的信号很稳定。n1=1:1:length(y);w=0:1:1000*pi/500; n2=1:1:10000;w=0:1:1000*pi/500; %定义频域参数 n1为y的长度,n2为输入原始信号的长度Y=y*exp(-j*n1*w); %对已调信号进行DTFT变换Z=z*exp(-j*n2*w); %对解调信号进行DTFT变换magY=abs(Y);magZ=abs(Z);基于 MATLAB 的 MSK 调制解调实现 第 8 页 共 15 页 图3-3 MSK信号解调前后的频域波形由解调后的频域波形可以看出MSK信号的稳定
14、性很好,说明MSK 信号的抗噪声性能很强。 图3-4 调制前解调后的频域波形通过调制前和解调后的频域波形比较,发现解调非常的成功,波形被完整无误的输出来。基于 MATLAB 的 MSK 调制解调实现 第 9 页 共 15 页 3.3 叠加噪声的MSK解调由于信号在传输的过程中难免要受到外来噪声的影响,所以在进行通信仿真时务必要在理想的模拟通信系统中加入高斯白噪声对系统进行影响,以此来判断一个通信系统抗噪声性能的好坏。在这次课程设计中,我利用awagn函数对已调信号加入信噪比为0.001的高斯白噪声。然后对加入了噪声的已调信号进行解调,同时画出其时域与频域的波形,将其与没有加噪声的调制信号进行比
15、较,不难发现:加入噪声后对已调信号的影响很大,但对解调信号而言,噪声对解调后的影响还是有一定限度的。这说明MSK解调系统的抗噪声性能很强。仿真的部分程序与相应的仿真波形图如下所示:y1=awgn(y,0.001); %对已调信号加入高斯白噪声z1=ddemod(y,Fc,Fd,Fs,msk); %对加入高斯白噪声的调制信号进行解调num1,ratio1=symerr(x,z2) %对加入噪声后解调的信号进行误码率的测定通过symerr函数对解调信号的误码率进行测定,得到的误码率为0.0024.因为输入的随机序列长度为10000,错了24个。说明MSK信号的抗噪声性能很强。当将信噪比变为1时,输
16、出的误码率很快发生了变化,由原来的0.0024变为了6.0000e-004.图形也同时发生了变化。通过图形的比较,可以发现噪声对调制信号的影响很大,但通过解调后影响相对减小了很多。图 3-5 信噪比为 0.001 的 MSK 信号加噪声解调前后的时域波形基于 MATLAB 的 MSK 调制解调实现 第 10 页 共 15 页 图 3-6 信噪比为 1 的 MSK 信号加噪声解调前后的时域波形Y1=y1*exp(-j*n1*w); %对加噪声后的已调信号进行DTFT变换Z1=z1*exp(-j*n2*w); %对加噪声后的解调信号进行 DTFT变换magY1=abs(Y1);magZ1=abs(
17、Z1);图 3-7 信噪比为 2 的 MSK 信号加噪声解调前后的频域波形基于 MATLAB 的 MSK 调制解调实现 第 11 页 共 15 页 在多次改变信噪比后,将信噪比与误码率联合做了如图 3-8 所式的波形图。图 3-8 信噪比与产生误码率曲线图通过图形可知,随着系统信噪比的增加,解调后输出的误码率随之减小,当信噪比增加到一定程度时,误码率变为 0。说明噪声对信号的影响在一定程度上是可以减小,但很难消除,因为每一个系统都不可能是理想系统,总会受到外界的干扰。4 遇到的问题及解决办法遇到的问题一:在设计程序时由于一开始使用的不是随机序列,同时 MSK 信号的抗噪声性能很强,当输入的是有
18、限个序列时,很难判断出噪声对信号的影响。所以在加入噪声后再进行解调时根本就无法发现噪声对信号的影响。解决办法: 利用 randint 函数来产生 100 个随机序列,然后再在调制好了的信号上加入高斯白噪声,之后对调制信号解调。这样发现噪声对信号的一点点影响。遇到的问题二:在画解调信号前后的频域波形时,由于忽略了调制信号和解调后的信号长度不一致,所以只设置了一个参数 n1,当进行仿真画图时一直都无法画出来。解决办法:在老师的指导下,我又重新检查了一变程序。后来发现错误,并重新添加了参数 n2,然后在进行 DTFT 转换后画图得到了正确的结果。遇到的问题三:在加入高斯白噪声时,由于不清楚 awgn
19、 这个函数,所以我一直按照参考书上的方法进行噪声的添加,但噪声却一直没有成功的添加。解决办法:在老师的知道下,我通过 MATLAB 里的 help 帮我很快了解了 awgn 函基于 MATLAB 的 MSK 调制解调实现 第 12 页 共 15 页 数,后来成功加入噪声也是可想而知的了。5 结束语这次通信原理课程设计虽然不是上大学以来第一次做课程设计,但它却是最成功的一次。这次课程设计耗时短,但得出的结果却很正确。在以往的课程设计中,耗了很多时间也并不一定能够得到正确的结果。课程设计本来就是锻炼我们的动手能力,同时是一个将我们在课堂上学到的理论知识用于实践的平台。这次通信原理课程设计很到的达到
20、了这样的目的。它不仅使我的理论知识的到了实践和加深,同时也让我从另一个角度去理解 2FSK 信号和 MSK 信号。当我接到老师给我们的任务书时,我当时头都大了。看到是 MSK 信号的调制与解调,开始有点茫然。因为我们在通信原理课上根本就没有提到过什么 MSK,后来通过图书馆的一些参考书和我们的教材我才发现原来 MSK 信号是 2FSK 信号的一个最简单的特例。慢慢的通过 2FSK 信号的特性,我也了解了很多关于 MSK 信号的特性,比如: MSK 信号是一种相位连续、包络恒定并且占用带宽最小的二进制正交 FSK 信号。通过这次课程设计不仅仅加强了我在通信原理这一块的了解,同时也进一步提高了我M
21、ATLAB 的编程能力以及对数字信号里频域与时域的图形的画法。更重要的是让我 懂得了在遇到挫折时不要轻易说出放弃两个字,因为在很多时候事情总是“峰回路转疑无路,柳暗花明又一村” 。所以当我们遇到挫折时第一个想到的不应该是放弃,而是想如何将遇到的困难解决。成功不会很轻易的来到我们的身边,但我们没有付出足够的努力时,成功永远都是离我们那么的远。在机房写报告的时候,由于我的粗心,没有随时备份写好了的报告。本来快完了的报告结果机子突然关机了,里面的内容什么都没有了。当时很是郁闷,搞了这么久,居然一下就全没了。可是回到寝室想,没都没了气还有个屁用啊!所以二话没说又重新开始写报告,没想到很快就将它搞定了。
22、这次课程设计的够程中虽然也遇到了几个棘手的问题,但通过我查阅资料,以及在老师的指导和同学的帮助下很快的将问题给解决了。在这里我对在课程设计中帮助我的老师和同学表示由衷的感谢!基于 MATLAB 的 MSK 调制解调实现 第 13 页 共 15 页 参考文献1 黄文梅, 熊桂林, 杨勇.信号分析与处理MATLAB 语言及应用. 长沙: 国防科技大学出版社, 2000.2 唐向宏, 岳恒立, 郑雪峰. MATLAB 及在电子信息类课程中的应用 .北京: 电子工业出版社, 2006, 8.3 邓华. MATLAB 通信仿真及应用实例详解 . 人民邮电出版社 , 2003.4 樊昌信,曹丽娜 .通信原
23、理.国防工业出版社,2006.25 孙屹.MATLAB 通信仿真开发手册 .国防工业出版社 .北京:2005基于 MATLAB 的 MSK 调制解调实现 第 14 页 共 15 页 附录: MSK 信号调制解调的源程序代码%程序名称 :msk_xie.m%程序功能 :利用 MATLAB 中的 M 文件编写程序,实现 MSK 信号的调制与解调%程序作者 :谢理义%最后修改日期:2009-01-16%画时域波形的程序代码:M=2; %定义输入随机信号的参数Fc=20;Fd=10;Fs=200;t=0:500;x=randint(1,100); %产生随机的输入序列y=dmod(x,Fc,Fd,Fs
24、,msk); %对输入的随机序列进行调制figure(1); %第一张图画调制前后的波形subplot(2,1,1),stem(x),title(调制前的输入波形 );subplot(2,1,2), (t,y(1:501),title(调制后的输出波形 ); axis(0 500 -1 1)z=ddemod(y,Fc,Fd,Fs,msk); %对调制后的MSK信号进行解调figure(2); %第二张图画解调前后的时域波形subplot(2,1,1),plot(y),title(解调前的波形); axis(0 500 -1 1)subplot(2,1,2),stem(z),title(解调后的
25、波形); axis(0 99 0 1)y1=awgn(y,0.001); %对已调信号加入高斯白噪声z1=ddemod(y,Fc,Fd,Fs,msk); %对加入高斯白噪声的调制信号进行解调num,ratio=symerr(x,z1)figure(3); %第三张图画加噪声解调前后的波形图subplot(2,1,1),plot(y1),title(加噪声后解调前的波形); axis(0 500 -1 1)subplot(2,1,2),stem(z1),title(加噪声后解调后的波形 ); axis(0 99 0 1)画频域波形的代码:n1=1:1:length(y);w=0:1:1000*p
26、i/500; %定义频域参数基于 MATLAB 的 MSK 调制解调实现 第 15 页 共 15 页 n2=1:1:100;w=0:1:1000*pi/500; Y=y*exp(-j*n1*w); %对已调信号进行DTFT变换Z=z*exp(-j*n2*w); %对解调信号进行 DTFT变换magY=abs(Y);magZ=abs(Z);figure(4); %第四张图画解调前后的频域波形图subplot(2,1,1),plot(w/pi,magY),title(解调前的频域波形)subplot(2,1,2),plot(w/pi,magZ),title(解调后的频域波形)Y1=y1*exp(-
27、j*n1*w); %对加噪声后的已调信号进行DTFT变换Z1=z1*exp(-j*n2*w); %对加噪声后的解调信号进行 DTFT变换magY1=abs(Y1);magZ1=abs(Z1);figure(5); %第五张图画加噪声解调前后的频域波形subplot(2,1,1),plot(w/pi,magY1),title(加噪声后解调前的频域波形)subplot(2,1,2),plot(w/pi,magZ1),title(加噪声后解调后的频域波形)figure(6);subplot(2,1,1),plot(w/pi,magX),title(调制前的频域波形)subplot(2,1,2),plot(w/pi,magZ),title(解调后的频域波形)信噪比与误码率的画图程序:x=-10 -8 -5 -4 -3 -1 0 2 3;y=0.2628 0.1923 0.0761 0.0426 0.0254 0.0048 0.0020 2.0000e-004 0;semilogy(x,y)