1、 何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 基于 MATLAB 的 PSK 调制实现学生姓名:何毅 指导老师:吴志敏摘 要 本课程设计主要论述 PSK 调制的基本原理以及如何在 MATALB 环境中使用 M 文件来实现 PSK 的调制。首先产生一个数字基带信号,再对这个基带信号进行调制,然后分析调制后的波形并改变采样频率观察波形的变化。对信号加入噪声后观察其时频图,分析噪声对调制的影响。在课程设计中,系统开发平台为 Windows XP ,程序运行平台使用 Windows XP,程序设计语言采用 MATLAB,通过调试运行,初步实现了设计目标。关键词 PSK 调制;M
2、ATLAB;基带信号;噪声1 引 言从原理上来说,受调载波的波形可以是任意的,只要已调信号适合于信道传输就可以了,但实际上,在大多数数字通信系统中,都选择正弦信号作为载波。这是因为正弦信号形式简单,便于产生及接收。数字调制和模拟调制相比,其原理并没有什么区别。不过模拟调制是对载波信号的参量进行连续调制,在接收端则对载波信号的调制参量连续地进行估值;而数字调制都是用载波信号的某些离散状态来表征所传送的信息,在接收端也只要对载波信号的离散调制参量进行检测。数字调制信号,在二进制时有2ASK、2FSK 和 2PSK 三种基本信号形式,本课程设计主要是实现对 PSK 调制的仿真。1.1 课程设计目的(
3、1)让我们熟悉使用 MATLAB 语言来解决一些简单的课程设计问题。(2)了解基带信号 PSK 的调制原理。(3)了解基带信号通过 PSK 调制后在信道上传输的原理。(4)通过比较调制前和调制后的二进制信号的频谱图,掌握 PSK 调制的原理和特性。何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 (5)锻炼自己独立思考问题的能力,提高自己动手的能力,增强社会适应度。1. 课程设计要求熟悉 MATLAB 文件中 M 文件的使用方法,并在掌握 PSK 信号生成原理的基础上,编出 PSK 信号的调制程序。绘制出 PSK 信号调制前后在时域和频域中的波形,并观察调制前后频谱有何变化以
4、加深对 PSK 信号调制原理的理解。改变采样频率绘制已调信号时频波形,进行相应分析。对信号叠加噪声,绘制出叠加噪声后 PSK 信号的时频波形,分析噪声对信号的影响。1. 课程设计步骤(1) 产生数字基带信号;(2) 对信号进行 PSK 调制;(3) 绘制调制前后的频谱图;(4) 改变抽样频率,观察调制的时频图的变化(5) 调制后加上高斯噪声,并改变噪声大小,观察噪声对 PSK 调制方法的影响。2 PSK 调制原理PSK(相位调制)的一种将距离为 180 度的两个相位(如 0 度和 180 度)对应 0 和 1, 是相位调制中最简单的一种。绝对相移是利用载波的相位(指初相)直接表示数字信号的相移
5、方式。二进制相移键控通常用相位 0 和 来分别表示“0”或“1” 。2PSK 已调信号的时域表达 式为 (2-1)2()()cosPSKcsttt这里,s(t) 与 2ASK 及 2FSK 时不同,为双极性数字基带信号,即(2-2)()()nbstagtT(2-3 )2cosPSKc或式中,g(t)是高度为 1,宽度为 的门函数:何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 因此,在某一个码元持续时间 内观察时,有 bT(2-4)2()cos(PSKcsttt或当码元宽度 为载波周期 的整数倍时,2PSK 信号的典型波形如图 2-1 所示。图 2-1 2PSK 信号的典型
6、波形当码元宽度 为载波周期 的整数倍时,2PSK 信号的典型波形如图 2-2 所示,2PSbTcT信号的模拟调制法框图(a) ;图(b)是产生 2PSK 信号的键控法框图,就模拟调制法而言,与产生 2ASK 信号的方法比较,只是对 s(t)要求不同,因此 2PSK 信号可以看作是双极性基带信号作用下的 DSB 调幅信号。而就键控法来说,用数字基带信号 s(t)控制开关电路,选择不同相位的载波输出,这时 s(t)为单极性 NRZ 或双极性 NRZ 脉冲序列信号均可 。1图 2-2 2PSK 调制框图3 PSK 调制的实现3.1 PSK 调制的参数设置通信工具箱中,PSK 调制可用 dmod 这个
7、函数来实现 。其表达式可表示为:5y=dmod(x,fc,fd,fs,method,M,tone,)其中 x 表示为数字基带信号,fc 为载波频率,fd 为基带采样频率,即 x 的采样频率,fs为 y 的采样频率,所有频率的单位都为 Hz。载波频率 fs 应该为基带频率 fd 的整数倍,fs应该远大于 fc,最好 fs、 fc 和 fd 的取值满足 fsfcfd。method 为调制方式,有何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 ask,fsk,psk 等等,当然本设计为 psk 调制。M 代表进制,在设计中 x 的每个值必须们于区间0, M-1。在本设计中,取 M
8、2,即 2PSK。在本设计中,我们取fc=20;fd=10;fs=500;x = 1 1 0 1 0 0 1 0 ;用 stem 函数绘制出基带信号的波形图stem(x)其数字基带信号波形如图 3-1 所示: 图 3-1 数字基带信号波形图通过图形,我们可以观察到,基带信号为一些离散的数字信号。3.2 PSK 调制实现绘制出基带信号,我们对基带信号进行调制。程序如下x = 1 1 0 1 0 0 1 0 何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 tone=8;fc=20;fd=10;fs=500;y=dmod(x,fc,fd,fs, psk,2,tone); %PSK
9、 调制 plot(y) %绘制调制后的波形图 数字基带信号经 PSK 调制后,其波形图形 3-2 所示.图 3-2 调制信号的时域波形图通过图形,我们可以发现在图中 150s、300s 和 350s 的地方出现了反相现象。为什么会出现这种情况类?因为二进制相移键控通常用相位 0 和 来分别表示“0”或“1”,我们知道,2PSK 信号是用载波的不同相位直接去表示相应的数字信号而得出的,在这种绝对移相的方式中,由于发送端是以某一个相位作为基准的,因而在接收系统也必须有这样一个固定基准相位作参考。如果这个参考相位发生变化,则恢复的数字信息就会与发送的数字信息完全相反,从而造成错误的恢复。这种现象常称
10、为 2PSK 的“倒 ”现象或“反向工作”现象。在实际中,为了克服这种倒 现像,常常会采用一种所谓的相对(差分)何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 移相(2DPSK)方式。3.3 PSK 调制频谱分析将数字基带信号调制完后,现在在数字信号无干扰的情况下,我们对调制后进行频谱分析 。24程序为:a=fft(x,1024); %对 x 进行傅利叶变换f=(0:length(a)-1)*fs/length(a)-fs/2;figureplot(f,abs(a); % 绘制 PSK 调制前的频谱图b=fft(y,1024);f=(0:length(b)-1)*fs/le
11、ngth(b)-fs/2;figureplot(f,abs(b); %绘制 PSK 调制后的频谱图其数字基带信号调制前和调制后的频谱图如图 3-3 和 3-4 所示:图 3-3 数字基带信号的频谱图何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 图 3-4 已调信号的频谱图2PSK 信号是一种双边带信号,我们设 g(t)的频谱为 sin()| |sfTGf则 2PSK 信号的双边功率谱表达式为: 222 )()()1()( cfGcfPfPsSK(3-2)22104s ccfGff若双性极基带波形信号的 1 与 0 出现的概率相等(即 P1/2),则式 3-2 变为(3-3
12、)222|()|()|PSKsccfff由上分析可知,2PSK 信号的功率谱密度由离散谱与连续谱两部分组成,但是当双极性基带信号以相等的的概率(P1/2)出现是,将不存在离散谱部分。在这里指出一点,对于2PSK 调制,式(2-1)并不表示原数字序列的已调制信号波形,而是表示绝对码变换成相对码后的数字序列的已调信号波形。因此,二相相对移相信号的频谱与二相绝对移相信号的频谱与二相绝对移相信号的频谱是完全相同的。何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 3.4 改变采样频率现在我们改变采样频率,观察调制波时域和频域的波形图,将采样频率改为 100Hz,即 fs=100Hz。
13、现对数字基带信号进行调制。改变采样频率为 100Hz 的时域和频域波形图如图 3-5 和 3-6 所示。图 3-5 fs=100Hz 时已调信号的时域波形图图 3-6 fs=100Hz 时已调信号的频谱图何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 我们通过观察改变前与改变后的时域和频域的波形图,可以发现当我们将采样频率减小以后,调制出来的波形发生了失真,得到的图形不是原来完整的正弦波形了,因为在调制过程中,如果采样频率过小,将不能采样到正确的信号。这样使得调制出来的波形失真,得不到我们所需要的结果。现在我们将采样频率改大,再来观察调制后的时频图。将采样频率改为 1000
14、Hz,即fs=1000Hz,其时频图如图 3-7 和 3-8 所示。图 3-7 fs=1000Hz 时已调信号时域波形图图 3-8 fs=1000Hz 时已调信号的频谱图可以发现,当 fs=1000Hz 时,波形与最初调制出来的波形是差不多的,但是何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 fs=1000Hz 比 fs=500Hz 时的波形更加接近完整的正弦波。所以采样频率越大,调制出来的波形就越接近初始信号的波形。x = 1 1 0 1 0 0 1 0 tone=8;fc=20;fd=10;fs=100;y=dmod(x,fc,fd,fs,psk,2,tone);%y
15、=dmod(x,fc,fd,fs,psk,2,tone);%y=dmod(x,fc, fd,fs,psk,2,tone); plot(y) %绘制调制后的波形图 a=fft(x,1024); %对 x 进行傅利叶变换f=(0:length(a)-1)*fs/length(a)-fs/2;figureplot(f,abs(a); % 绘制 PSK 调制前的频谱图b=fft(y,1024);f=(0:length(b)-1)*fs/length(b)-fs/2;figureplot(f,abs(b); %绘制 PSK 调制后的频谱图x = 1 1 0 1 0 0 1 0 tone=8;fc=20;
16、何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 fd=10;fs=500;y=dmod(x,fc,fd,fs,psk,2,tone);%y=dmod(x,fc,fd,fs,psk,2,tone);%y=dmod(x,fc, fd,fs,psk,2,tone); plot(y) %绘制调制后的波形图 a=fft(x,1024); %对 x 进行傅利叶变换f=(0:length(a)-1)*fs/length(a)-fs/2;figureplot(f,abs(a); % 绘制 PSK 调制前的频谱图b=fft(y,1024);f=(0:length(b)-1)*fs/lengt
17、h(b)-fs/2;figureplot(f,abs(b); %绘制 PSK 调制后的频谱图3.5 加入高斯噪声现在我们在数字信号中加入噪声,再对其进行调制,观察其波形在时域和频域的变化。噪声有很多种,为了设计的方便以及图形的处理,在本设计中我们加入的噪声为高斯白噪声。因为白噪声是理想的宽带过程,其功率谱密度在整个频域内都是均匀分布的。在加入高斯噪声情况下,进行 PSK 调制:何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 y=dmod(x,fc,fd,fs, psk,2,tone);ynoisy=y+awgn(y,20,0); %加入高斯噪声figureplot(ynoi
18、sy); %数字基带信号 PSK 加入噪声的波形图f=(0:length(ynoisy)-1)*fs/length(ynoisy)-fs/2;figureplot(f,abs(fft(ynoisy);加入噪声后 PSK 调制的时域波形图和频谱图如 3-9 和 3-10 所示图 3-9 加入噪声后已调信号时域波形图何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 图 3-10 加入噪声后已调信号的频谱图通过加入高斯白噪声,我们发现调制信号的波形发生了变化。加入噪声后,调制的波形发生了失真,但是我们可以发现,PSK 调制在加入噪声以后,其波形失真的并不是非常的严重,我们还是可以看
19、得出来,它仍然与正弦信号信号非常接近,其频谱图也与初始信号的频谱图非常相近。我们还可以改变噪声的大小来观察噪声对 PSK 调制方式的影响。我们把信噪比改小,改为 1db,观察调制后的图形,如图 3-11 和 3-12 所示:何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 图 3-11 信噪比为 1db 时已调信号时域波形图图 3-12 信噪比为 1db 时已调信号频谱图通过观察,我们可以明显的看到,当信噪比减小,即加大噪声时,调制的出来的波形发生了很大的失真,基本上已经不在是正弦信号了。所以加入的噪声越大时,会使得波形失真越严重。现在我们把信噪比改成 20db 时,我们观察
20、其图形,如图 3-13 和 3-14 所示何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 图 3-13 信噪比为 20db 时已调信号时域图图 3-14 信噪比为 20db 时已调信号频谱图可以发现,当我们把信噪比增大的时候,调制的图形与原始信号的图形更接近,也就是说,信噪比越大,PSK 调制方式的抗噪声性能就越好。而我们通过PSK,FSK,ASK 等方式的调制,可以发现 PSK 系统的抗噪声性能是最好的。所以我们可得知,PSK 系统的抗噪声性能比较强,正因为如此,PSK 系统在得以在很多领域中得以应用。4 出现的问题及解决方法此次课程设计,在其中遇到了很多困难。这是第一次
21、做课程设计,一开始是一头雾水,不知道从何入手。但是经过指导老师的的精心指导、同学的帮助以及自己的努力,把一个个问题慢慢的解决了。主要问题如下:1、 开始没完全搞懂自己所设计课题的原理,以及对自己所需要的软件不了解,很多在设计中所需要的函数都不太清楚,使得设计难度加大了。2、 在输入基带信号后,要绘制基带信号的波形图,因为 PSK 的基带信号为数字信号,何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 所以要绘制出其图形要用的函数是 stem,而不是 plot。3、 对基带信号的采样频率不能过低,过低的采样频率将导致波形失真。4、 在绘制调制信号的频谱图时因为不会进行傅立叶变换
22、,所以迟迟都不能绘制出频谱图。5、 要在 PSK 调制信号加入噪声是一件比较麻烦的事情。因为开始不知道如何在在调制信号上加入噪声,不会使用函数 awgn,后来在 MATLAB 中使用了 HELP 命令,看了它的解释才懂了如何去添加噪声。其次要绘制出加入噪声后的时域和频域波形图也弄了好久。6、 最后,在设计过程中,使用 M 文件编程是一件很烦琐的事情,一不小心哪个符号弄错了,就会使得整个程序都会出现错误。而且使用的 MATLAB 是全英文版的,如果对于专业英语不太熟悉,在出现错误以后,不能看懂所出现的错误是什么意思,这也使得在设计过程中难度加大。 5 结束语在数字通信的频率调制的、振幅调制、相信
23、调制三种调制方式中,PSK 在中,高速率数据传输中得到了广泛的应用。数字信号一般通过对载波进行移相的方法转换为模拟信号。所以说 PSK 是一种比较优越的调制方式,在现代互联网中二进制数字信号的使用非常广泛。在这次课程设计中,我们付出了很大努力,终于在指导老师的帮助下基本完成,通过这次课程设计,使我对通信原理和数字信号处理的知识在原有的的基础上得到了很大的巩固和提高,同时开阔了我的知识范围,增强了自己动手的能力以及独立思考问题的本能,为以后适应社会发展做了充分的铺垫。在设计的过程中,在使用 MATLAB 对 PSK调制的时候,真正的认识到了 MTALAB 这个软件的强大性,它竟然包含着如此多的功
24、能与函数。在 MATLAB 里,HELP 命令是一个起着非常重要的命令,它可以帮你查找里面包含的任何函数的功能以及其使用方法,并都举例了,给我们在设计中带来了很大的帮助。在此次课程设计中,虽然遇到了很多的困难,但是在老师的细心指导和自己不断的努力下调试下,基本上完成了设计要求,达到了预期的效果,在这里感谢各位老师的不断帮助,使我在规定的期限内完成了此次的设计任务,让我们懂得了什么是课程设计,提高了我们的设计水平。何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 参考文献1 樊昌信,张甫翊,徐炳祥,吴成柯通信原理第 5 版国防工业出版社,20072 郭仕剑,王宝顺,贺志国,杨可
25、心MATLAB7.X 数字信号处理人民邮电出版,20063 孙祥,徐流美,吴清MATLAB7.0 基础教程清华大学出版社, 20064 黄文梅,熊桂林,杨勇信号分析与处理MATLAB 语言及应用国防科技大学出版社,20005 韩利竹,王华 MATLAB 电子仿真与应用第 2 版国防工业出版社,2003何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 附录 1:PSK 调制源程序清单 %程序名称:psk.m%程序功能:调用函数 dmod 实现 PSK 的调制%程序作者:何毅%最后修改时间:2008-01-18%程序代码x=1 1 1 0 0 0 1 0;stem(x)%stem
26、(x); %绘制基带信号的波形图tone=8;%tone=8;%tone=8; %PSK 相邻符号的频率间隔fc=20;fd=10;fs=500;plot(y) %plot(y) %=500;y=dmod(x,fc,fd,fs,psk,2,tone);%PSK 调制figure %绘制已调信号的波形图 a=fft(x,1024);%a=fft(x,1024); % 对基带信号进行傅立叶变换f=(0:length(a)-1)*fs/length(a)-fs/2; %将横坐标转化为时间轴figureplot(f,abs(a);%plot(f,abs(a); %基带信号的频谱图b=fft(y,102
27、4); %对已调信号进行傅立叶变换f=(0:length(a)-1)*fs/length(a)-fs/2; %f=(0:length(b)-1)*fs/length(b) -fs/2;figureplot(f,abs(b); %已调信号的频谱图y=dmod(x,fc,fd,fs,psk,2,tone);ynoisy=y+awgn(y,10,0); %加入高斯白噪声figureplot(ynoisy); %绘制加入噪声后的波形图f=(0:length(ynoisy)-1)*fs/length(ynoisy) -fs/2;figureplot(f,abs(fft(ynoisy); %l 加入噪声后
28、的频谱图何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 附录 2:改变采频率为 fs=100 时的调制源程序清单%程序名称:psk.m%程序功能:调用函数 dmod 实现 PSK 的调制%程序作者:何毅%最后修改时间:2008-01-18%程序代码x=1 1 1 0 0 0 1 0;stem(x); %绘制基带信号的波形图tone=8; %PSK 相邻符号的频率间隔fc=20;fd=10;fs=100;y=dmod(x,fc,fd,fs,psk,2,tone);%PSK 调制figureplot(y) %绘制已调信号的波形图 a=fft(x,1024); % 对基带信号进行
29、傅立叶变换f=(0:length(a)-1)*fs/length(a) -fs/2; %将横坐标转化为时间轴figureplot(f,abs(a); %基带信号的频谱图b=fft(y,1024); %对已调信号进行傅立叶变换f=(0:length(b)-1)*fs/length(b) -fs/2;figureplot(f,abs(b); %已调信号的频谱图何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 附录 3:改变采频率为 fs=1000 时源程序清单%程序名称:psk.m%程序功能:调用函数 dmod 实现 PSK 的调制%程序作者:何毅%最后修改时间:2008-01-
30、18%程序代码x=1 1 1 0 0 0 1 0;stem(x); %绘制基带信号的波形图tone=8; %PSK 相邻符号的频率间隔fc=20;fd=10;fs=1000;y=dmod(x,fc,fd,fs,psk,2,tone);%PSK 调制figureplot(y) %绘制已调信号的波形图 a=fft(x,1024); % 对基带信号进行傅立叶变换f=(0:length(a)-1)*fs/length(a) -fs/2; %将横坐标转化为时间轴figureplot(f,abs(a); %基带信号的频谱图b=fft(y,1024); %对已调信号进行傅立叶变换f=(0:length(b)
31、-1)*fs/length(b) -fs/2;figureplot(f,abs(b); %已调信号的频谱图何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 附录 4:改变信噪比为 1db 时源程序清单%程序名称:psk.m%程序功能:调用函数 dmod 实现 PSK 的调制%程序作者:何毅%最后修改时间:2008-01-18%程序代码x=1 1 1 0 0 0 1 0;stem(x); %绘制基带信号的波形图tone=8; %PSK 相邻符号的频率间隔fc=20;fd=10;fs=500;y=dmod(x,fc,fd,fs,psk,2,tone);%PSK 调制figurep
32、lot(y) %绘制调制后的波形图 a=fft(x,1024); % 对基带信号进行傅立叶变换f=(0:length(a)-1)*fs/length(a) -fs/2; %将横坐标转化为时间轴figureplot(f,abs(a); %基带信号的频谱图b=fft(y,1024); %对已调信号进行傅立叶变换f=(0:length(b)-1)*fs/length(b) -fs/2;figureplot(f,abs(b); %已调信号的频谱图y=dmod(x,fc,fd,fs,psk,2,tone);ynoisy=y+awgn(y,1,0); %加入高斯白噪声figureplot(ynoisy);
33、 %绘制加入噪声后的波形图f=(0:length(ynoisy)-1)*fs/length(ynoisy) -fs/2;figureplot(f,abs(fft(ynoisy); %加入噪声后的频谱图何毅 基于 MATLAB 的 PSK 调制实现 第页 共 20 页 附录 5:改变信噪比为 20db 时源程序清单%程序名称:psk.m%程序功能:调用函数 dmod 实现 PSK 的调制%程序作者:何毅%最后修改时间:2008-01-18%程序代码x=1 1 1 0 0 0 1 0;stem(x); %绘制基带信号的波形图tone=8; %PSK 相邻符号的频率间隔fc=20;fd=10;fs=
34、500;y=dmod(x,fc,fd,fs,psk,2,tone);%PSK 调制figureplot(y) %绘制已调信号的波形图 a=fft(x,1024); % 对基带信号进行傅立叶变换f=(0:length(a)-1)*fs/length(a) -fs/2; %将横坐标转化为时间轴figureplot(f,abs(a); %基带信号的频谱图b=fft(y,1024); %对已调信号进行傅立叶变换f=(0:length(b)-1)*fs/length(b) -fs/2;figureplot(f,abs(b); %已调信号的频谱图y=dmod(x,fc,fd,fs,psk,2,tone);ynoisy=y+awgn(y,20,0); %加入高斯白噪声figureplot(ynoisy); %绘制加入噪声后的波形图f=(0:length(ynoisy)-1)*fs/length(ynoisy) -fs/2;figureplot(f,abs(fft(ynoisy); %加入噪声后的频谱图