基于MATLAB的PSK解调.doc
《基于MATLAB的PSK解调.doc》由会员分享,可在线阅读,更多相关《基于MATLAB的PSK解调.doc(19页珍藏版)》请在冰点文库上搜索。
《基于MATLAB的PSK解调》第19页共19页
基于MATLAB的PSK解调
摘要本课程设计是基于Matlab6.5集成环境下用M文件编制程序来实现PSK信号的解调。
先是产生一个数字基带信号,再用调制函数dmod对基带信号进行PSK调制来产生PSK信号,接着用解调函数ddemod实现PSK信号的解调,并分别绘制出有无噪声时解调前后在时频波形并进行对比以及进行频谱分析,最后根据运行结果和波形分析解调过程的正确性及噪声对解调的影响,总结出PSK信号解调的主要特性。
在掌握了基本原理的基础上,具体实现了数字信号PSK的解调,完成了设计目标。
关键词Matlab;基带信号;PSK;解调;噪声
1引言
移相键控(PSK)方式是受键控的载波相位按基带脉冲而改变的一种数字调制方式,而在恒参信道下,移相键控(PSK)相比与振幅键控(ASK)、移频键控(FSK),不但具有较高的抗干扰性能,而且抗噪声性能好以及可以有效的利用频带,因此被广泛的用于数字通信中[1]。
本课程设计主要是实现2PSK信号的解调,在Matlab6.5环境下用M文件来编制程序并且分别绘制出有无噪声时解调前后在时域和频域波形并进行对比以及进行频谱分析,加深对2PSK解调原理的掌握。
1.1课程设计目的
本课程设计是基于Matlab6.5中用M文件来实现PSK信号的解调,通过该课程设计可以加深我对PSK解调原理的理解以及通过分析解调前后的频谱图更好的掌握PSK解调的原理和特性,对以后学习其它信号的解调过程奠定了基础,提高了自己的实践动手能力和独立思考问题能力。
1.2课程设计要求
1)熟悉Matlab6.5集成环境下M文件的使用方法,通过理解和掌握PSK信号解调原理,编写程序来实现PSK信号的解调。
2)分别绘制出PSK信号解调前后在时域和频域中的波形图,并观察解调前后频谱有何变化并分析频谱变化原因,从而可以加深对PSK信号解调原理的理解和掌握。
3)对已调信号叠加噪声,并进行解调,分别绘制出解调前后信号的时频波形图,
从而比较叠加噪声(高斯白噪声)和未叠加噪声时解调后信号的波形和频谱有何区别,进而分析噪声对信号解调所造成的影响。
4)独立的完成课程设计的全部内容,能正确阐述和分析设计和实验结果。
1.3课程设计步骤
首先是产生随机数字基带信号,接着用调制函数dmod实现PSK调制产生PSK信号(简单介绍),再对PSK信号用解调函数ddemod实现PSK解调,且绘制出解调后时频域的波形和频谱,并与调制前信号(即原始数字基带信号)进行比较,给出相应的分析,最后再在解调前叠加上噪声(高斯白噪声),然后再进行解调,绘制出解调后在时频域的波形和频谱,并与无噪声时进行比较分析,并且再叠加大噪声(信噪比小)和叠加小噪声(信噪比大)时比较时频域的波形和频谱,分析噪声对信号的影响。
2PSK解调原理
2PSK信号可以看成是双极性数字基带信号作用下的DSB调幅信号[2]。
2PSK的信号形式一般表示为:
(2-1)
2PSK的典型波形如图2-1所示:
图2-12PSK信号的典型波形
因为2PSK信号是属于DSB信号,所以对于它的解调不能够采用包络检测的方法,而只能够采用相干解调和鉴相法解调方法进行解调,其解调的框图如图2-2所示:
鉴相法解调
相干解调
解调器
y(t)z(t)x(t)
图2-22PSK信号的解调框图
而主要是采用相干解调的方法对PSK信号进行解调,工作原理简要分析如下:
当不考虑噪声时,带通滤波器输出可以表示为:
y(t)=cos(wct+n)(2-2)
式中n为2PSK信号的某一个码元的初相。
当n=0时,代表数字“0”;而当n=时,代表数字“1”。
再通过乘法器与同步载波coswct相乘后,输出为:
z(t)=cos(wct+n)coswct=cosn+cos(2wct+n)(2-3)
接着经过低通滤波器滤除高频分量,可以得到解调器的输出为:
x(t)=cosn(2-4)
式中n为2PSK信号的某一个码元的初相。
当n=0时,x(t)=;当n=1时,x(t)=-。
根据输入端产生2PSK信号时n(0或)代表数字信息(“1”或“0”)的规定,以及接收端x(t)与n关系的特性,所以抽样判决器的判决准则应该为:
当x0时,判为“0”;当x<0时,判为“1”。
其中x为x(t)在抽样时刻的值。
由此可见,2PSK信号的相干解调的过程实际上就是对输入的已调信号与本地载波信号进行极性比较的过程,故2PSK信号的相干解调常称为极性比较法解调,也称为同步检测法解调[5]。
3PSK解调的实现
3.1PSK信号的产生
由原理上说2PSK信号的产生方法有模拟调制法和键控法。
本课程设计是在Matlab6.5集成环境下用M文件在产生基带信号的基础上调用数字调制函数dmod设置参数Fc,Fd,Fs,在Matlab6.5下具体产生PSK信号的实现为:
y=dmod(x,Fc,Fd,Fs,’psk’,M)(M=2表示二进制)
Fc表示载波频率,Fd表示数字基带信号与已调信号取样,Fs表示采样频率。
3.2PSK解调实现
本课程设计由原理上说是对数字基带信号在无噪声干扰的情况下采用相干解调方法对2PSK信号进行解调,具体是通过Matlab6.5集成环境下用M文件调用数字解调函数ddemod编制程序来实现PSK信号的解调。
首先是随机产生长度为32的二进制数字基带信号,在Matlab6.5下具体实现为:
x=randint(32,1,M)(M=2表示二进制)
然后是用调制函数dmod产生PSK信号,其中的参数Fc,Fd,Fs可以设置为:
Fc=10;%载波频率
Fd=20;%数字基带信号与已调信号取样
Fs=500;%采样频率
Fc,Fd,Fs之间的关系为:
Fc/Fd=1/2(表示基带信号的一个码元对应的PSK信号波形有两个正弦载波),Fs/Fc=50(表示在一个正弦载波中采样50个点)。
再用解调函数ddemod对已调信号进行PSK解调,具体实现为:
z=ddemod(y,Fc,Fd,Fs,’psk’,M)(M=2表示二进制)
用图形窗口分割函数subplot[3]和绘制离散序列图函数stem[3]对比绘制出调制前数字基带信号时域波形和解调后信号的时域波形,如图3-1所示:
图3-1数字基带信号PSK调制前与解调后的时域波形
由图3-1对比波形图进行分析:
输入的数字基带信号为:
10011001011100011001000010101010
解调后的输出信号为:
10011001011100011001000010101010
由PSK解调原理可知在对已调信号不叠加噪声再进行解调所得到的输出信号与输
入的数字基带信号相一致,不会产生误码。
接着用fft函数对数字基带信号和解调后的信号进行傅里叶变换,再用图形窗口分割函数subplot[3]和绘制二维图形函数plot[3]对比绘制出调制前数字基带信号频谱和解调后信号的频谱,如图3-2所示:
图3-2数字基带信号调制前与解调后的频谱图
由图3-2对比频谱图进行分析:
同样与时域波形图分析一样,在无噪声的情况下,理论上进行解调后不会产生误码,所以数字基带信号调制前与经PSK解调后的频谱图是相一致的,而且该频谱图是关于x轴的正负半轴是对称的。
由上述的时频域图对比分析可以知道当无噪声时对PSK信号进行解调所得到的实际结果与理论上的分析是相一致的。
3.3叠加噪声时的PSK解调
因为在信道中噪声会对信号的传输有影响,主要是高斯白噪声,所以需要叠加噪声(主要是高斯白噪声)来分析噪声对信号影响。
为了能够更好的研究噪声对PSK解调信号的影响,可以用函数randint[3]产生长度为64的二进制随机数字基带信号,因为输入的数字基带信号的码元越多就可以更好的研究误码率。
现在先对已调信号叠加高斯白噪声,再进行PSK解调。
因为高斯白噪声是一组高
斯分布的随机数,所以可以用函数awgn[4]来实现叠加高斯白噪声,具体实现为:
SRNperBit=6[4];(信噪比为6)
adjSRN=SRNperBit-10*log10(Fs/Fd)+10*log10(log2(M))[4];
yniose=awgn(y,adjSRN,'measured',[],'dB')[4];
然后再用解调函数ddemod对加入高斯白噪声的已调信号进行PSK解调。
同样用图形窗口分割函数subplot[3]和绘制离散序列图函数stem[3]对比绘制出调制前数字基带信号时域波形,解调后信号的时域波形以及加入高斯白噪声解调后信号的时域波形,如图3-3所示:
图3-3数字基带信号PSK调制前与有无噪声解调后的时域波形
由图3-3对比波形图进行分析:
输入的数字基带信号为:
1000110110110000010011000110101011111010111000100110000001000010
无噪声解调后的输出信号为:
1000110110110000010011000110101011111010111000100110000001000010
加入高斯白噪声解调后的输出信号为:
1000110110110000010011000110101011111110011000100110000001000010
由此可知对已调信号叠加高斯白噪声再进行PSK解调,得到PSK信号解调波形与原来的基带数字信号(原始信号)以及无噪声的PSK信号解调波形相对比产生了误码。
其误码Ne=2;N=64。
由公式Pe=Ne/N,可得出实际误码率为0.03125。
根据PSK信号加入噪声后的解调原理由理论上分析:
当发送“1”时,由于叠加了高斯白噪声,使抽样值在抽样判决时刻变为小于0时,将发生“1”错判为“0”的误码,其概率为:
(x<0,发送“1”时)[1](3-1)
当发送“0”时,同理由于叠加了高斯白噪声,使抽样值在抽样判决时刻变为大于0时,将发生“0”错判为“1”的误码,其概率为:
(x>0,发送“0”时)[1](3-2)
因为Pe1=Pe2,故通过计算可得2PSK信号采用同步检测法(相干解调法)时的系统总误码率为:
[1](3-3)
在大信噪比下,上式成为:
[1](3-4)
式中r表示信噪比。
由于加入的高斯白噪声的信噪比为6(噪声较大),所以产生误码的概率也比较大。
与理论上的分析是相符合的,r越小,则理论上的误码率越大。
接着同样用fft函数对数字基带信号和有无噪声解调后的信号进行傅立叶变换,用图形窗口分割函数subplot[3]和绘制二维图形函数plot[3]对比绘制出调制前数字基带信号频谱,无噪声解调后信号的频谱以及有噪声解调后信号的频谱,如图3-4所示:
图3-4数字基带信号PSK调制前与有无噪声解调后的频谱图
由图3-4对比频谱图进行分析:
同样与时域波形图分析一样,在无噪声的情况下,理论上进行解调后不会产生误码,但是当加入高斯白噪声解调后的信号理论上产生误码,所以有噪声频谱图与无噪声的频谱图相比较,在产生误码的地方所对应的频谱与无噪声时PSK信号解调的频谱相比会有一些不一样,产生一些失真。
当把叠加的高斯白噪声的信噪比改变为2(叠加大噪声),具体实现为:
SRNperBit=2(信噪比为2)
同样用函数subplot[3]和函数stem[3]可对比绘制出时域波形如图3-5所示:
图3-5数字基带信号PSK调制前与有无噪声解调后的时域波形
由图3-5对比时域波形进行分析:
输入的数字基带信号为:
0110110111011010000011000111100111100100010010011000010100111011
无噪声解调后的输出信号为:
0110110111011010000011000111100111100100010010011000010100111011
加入高斯白噪声解调后的输出信号为:
0110010111111010100011000111100111100100010011001100010110111011
由此可知当叠加信噪比小的噪声(叠加大噪声)时,其误码Ne=7;N=64,由公式
Pe=Ne/N,可得出实际误码率为0.109375。
接着再用函数subplot[3]和函数plot[3]可对比绘制出频谱图,如图3-6所示:
图3-6数字基带信号PSK调制前与有无噪声解调后的频谱图
由图3-6对比频谱图进行分析:
在加入信噪比小的噪声(叠加大噪声)时,由于产生的误码数量增加,故对应的频谱与无噪声时的频谱相比较会有较大程度上的不一样,失真的程度增大。
当把叠加的高斯白噪声的信噪比改变为20(叠加小噪声),具体实现为:
SRNperBit=20(信噪比为20)
同样用函数subplot[3]和函数stem[3]可对比绘制出时域波形如图3-7所示:
图3-7数字基带信号PSK调制前与有无噪声解调后的时域波形
由图3-7对比时域波形进行分析:
输入的数字基带信号为:
1110101011000110110100000101011000000110100000001010001101110000
无噪声解调后的输出信号为:
1110101011000110110100000101011000000110100000001010001101110000
加入高斯白噪声解调后的输出信号为:
1110101011000110110100000101011000000110100000001010001101110000
由此可知当叠加信噪比大的噪声(叠加小噪声时),信噪比过大基本上不会产生误码(误码率很小)。
用函数fft进行傅立叶变换之后接着再用函数subplot[3]和函数plot[3]可对比绘制出频谱图,如图3-8所示:
图3-8数字基带信号PSK调制前与有无噪声解调后的频谱图
由图3-8对比频谱图进行分析:
由于加入的是信噪比过大的噪声(叠加小噪声),误码率很小,所以对应的频谱与无噪声时的解调信号的频谱大致上是一样的。
(失真太小)
由上述改变信噪比所得出的时频域波形可以知道当叠加大噪声时(信噪比小),产生误码的概率较大(误码率比较大);而当叠加小噪声时(信噪比大),产生误码的概率较小,在有限的码元下可能不会产生误码(误码率很小)。
理论上说因为PSK信号的抗噪声性能是最好的,所以只有在叠加大噪声时(信噪比小)才能更好的体现出误码率。
4遇到的问题及解决办法
在此次的课程设计中,我遇到了一些问题:
首先是在设置采样频率的时候发现当采样频率过小会使频谱图出现较大的失真,所以经过反复的设置观察最后找到比较适合的采样频率。
其次在绘制基带数字信号波形时先是用函数plot发现波形是不对的,后来经过思考以及参考文献发现数字基带信号应该是一个离散型的,而函数plot是用来绘制二维连续图形的,所以不能用,只能用绘制离散序列图函数stem[3]来绘制基带数字信号波形。
最后在已调信号中加入噪声再进行PSK解调时,用ynoise=y+10*randn(Fs/Fd*64,1)来实现发现会产生很大的误码率,而且也不能体现出信噪比大小对解调信号的影响,所以在参考了Matlab6.5的Help文件中找到了可以用函数awgn加入高斯白噪声,但是直接用awgn(y,SRNperBit)[4](y是已调信号,SRNperBit是信噪比),但是却没有加进噪声,通过参考文献了解到要加入信号比转换语句adjSRN=SRNperBit-10*log10(Fs/Fd)+10*log10(log2(M))[4],再用语句awgn(y,adjSRN,‘measure’,[],‘dB’)[4],这样才能够正确的加入噪声。
5结束语
在数字通信的振幅调制(ASK)、频率调制(FSK)、相位调制(PSK)三种调制方式中,从理论上说PSK信号的频率利用率最高,抗噪声性能最好。
所以在中、高速数据传输中得到了广泛的应用。
通过此次的课程设计,我对Matlab6.5中用M文件编制程序的方法有了更深一步的掌握以及对Matlab6.5中一些函数的用法有了更好的认识,同时也使我对于通信原理和数字通信原理的基本理论知识在原有的基础上得到了进一步的加深,并且也增强了自己动手的能力以及独立思考和解决问题的能力,为以后能够更好的适应社会的高速发展提供了一定的基础。
在此次的课程设计,我虽然遇到了一些问题,但是通过自己的思考和参考书籍以及在老师的帮助下,最后终于完成了设计目标,达到了预期的效果。
参考文献
[1]樊昌信,张甫翊,徐炳祥,吴成柯.通信原理(第五版).北京:
国防工业出版社,2007
[2]宋祖顺,宋晓勤.现代通信原理(第二版).北京:
电子工业出版社,2007
[3]梁虹,梁洁,陈跃斌.信号与系统分析及MATLAB实现.北京:
电子工业出版社,2002
[4]唐向宏,岳恒立,郑雪峰.MATLAB及在电子信息类课程中的应用.北京:
电子工业出版社,2006
[5]张会生.现代通信系统原理.北京:
高等教育出版社,2001
附录1:
PSK解调(无噪声)程序清单
%程序名称:
PSK1.M
%程序功能:
对PSK信号进行无噪声的解调
%程序作者:
liu
%最后修改时间:
2008-1-18
M=2;%输入二进制
Fc=20;%载波频率20HZ
Fd=10;%原始信号与已调信号取样频率10HZ
Fs=500;%采样频率500HZ
x=randint(32,1,M);%输入长度为32的二进制数字基带信号
y=dmod(x,Fc,Fd,Fs,'psk',M);%进行PSK调制
z=ddemod(y,Fc,Fd,Fs,'psk/opt',M)%进行PSK解调
N=length(y);%已调信号的长度
a=fft(x,N);%对数字基带信号进行傅立叶变换
b=fft(z,N);%对PSK解调信号进行傅立叶变换
f=(0:
N-1)*Fs/N-Fs/2;%频率矢量
figure
subplot(2,1,1);plot(f,abs(a));%绘制数字基带信号频谱图
xlabel('频率(HZ)');ylabel('幅值');%设置横纵轴坐标标题
title('基带数字信号频谱');%设置图形标题
subplot(2,1,2);plot(f,abs(b));%绘制PSK解调信号频谱图
xlabel('频率(HZ)');ylabel('幅值');%设置横纵轴坐标标题
title('psk解调信号频谱');%设置图形标题
figure
subplot(2,1,1);stem(x)%绘制数字基带信号时域波形图
xlabel('时间(t)');ylabel('幅值');%设置横纵轴坐标标题
title('基带数字信号波形');%设置图形标题
subplot(2,1,2);stem(z)%绘制PSK解调信号时域波形图
xlabel('时间(t)');ylabel('幅值');%设置横纵轴坐标标题
title('psk解调信号波形');%设置图形标题
附录2:
PSK解调(加入高斯白噪声)程序清单
%程序名称:
PSK2.M
%程序功能:
对已调信号加入高斯白噪声的PSK解调
%程序作者:
liu
%最后修改时间:
2008-1-18
M=2;%输入二进制
Fc=20;%载波频率20HZ
Fd=10;%原始信号与已调信号取样频率10HZ
Fs=500;%采样频率500HZ
SRNperBit=6;%设置信噪比为6
adjSRN=SRNperBit-10*log10(Fs/Fd)+10*log10(log2(M));%信噪比转换
x=randint(64,1,M);%输入长度为64的二进制数字基带信号
y=dmod(x,Fc,Fd,Fs,'psk',M);%进行PSK调制
yniose=awgn(y,adjSRN,'measured',[],'dB');%加入高斯白噪声
w=ddemod(y,Fc,Fd,Fs,'psk/opt',M);%进行无噪声PSK解调
z=ddemod(yniose,Fc,Fd,Fs,'psk/opt',M);%加入高斯白噪声PSK解调
s=symerr(x,z);%计算误码率
N=length(y);%已调信号的长度
a=fft(x,N);%对数字基带信号进行傅立叶变换
b=fft(w,N);%对无噪声PSK解调信号进行傅立叶变换
c=fft(z,N);%对加入高斯白噪声PSK解调信号进行傅立叶变换
f=(0:
N-1)*Fs/N-Fs/2;%频率矢量
figure
subplot(3,1,1);plot(f,abs(a));%绘制数字基带信号频谱图
xlabel('频率(HZ)');ylabel('幅值');%设置横纵轴坐标