您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页基于MATLAB仿真的数字信号调制的性能比较和分析

基于MATLAB仿真的数字信号调制的性能比较和分析

来源:尚车旅游网


2ASK、2FSK、2PSK数字调制系统的

Matlab实现及性能分析比较

指导教师:

班级: 学号:

姓名:

引言:数字信号有两种传输方式,分别是基带传输方式和调制传输方式,即带通,在实际应用中,因基带信号含有大量低频分量不利于传送,所以必须经过载波和调制形成带通信号,通过数字基带信号对载波某些参量进行控制,使之随机带信号的变化而变化,这这一过程即为数字调制。数字调制为信号长距离高效传输提供保障,现已广泛应用于生活和生产中。另外根据控制载波参量方式的不同,数字调制主要有调幅(ASK),调频(FSK),调相(PSK) 三种基本形式。本次课题针对于二进制的2ASK、2FSK、2PSK进行讨论,应用Matlab矩阵实验室进行仿真,分析和修改,通过仿真系统生成一个人机交互界面,以利于仿真系统的操作。通过对系统的仿真,更加直观的了解数字调制系统的性能及影响其性能的各种因素,以便于比较,评论和改进。

关键词: 数字,载波,调制,2ASK,2FSK,2PSK,Matlab,仿真,性能,比较,分析

正文:

一 .数字调制与解调原理

1.1 2ASK

(1)2ASK

2ASK就是把频率、相位作为常量,而把振幅作为变量,信息比特是通过载波的幅度来传递的。由于调制信号只有0或1两个电平,相乘的结果相当于将载频或者关断,或者接通,它的实际意义是当调制的数字信号\"1时,传输载波;当调制的数字信号为\"0\"时,不传输载波。

Acosct,当ak1表达式为:

s2ASK(t)0,当ak0

1.2 2FSK

2FSK可以看做是2个不同频率的2ASK的叠加,其调制与解调方法与2ASK差不多,主要频率F1和F2,不同的组合产生所要求的2FSK调制信号。 公式如下:

Acos1t,当ak1s2FSK(t)Acos2t,当ak0

1.3 2PSK

2PSK以载波的相位变化为基准,载波的相位随数字基带序列信号的1或者0而改变,通常用已经调制完的载波的0或者π表示数据1或者0,每种相位与之一一对应。

二.数字调制技术的仿真实现

本课程设计需要借助MATLAB的M文件编程功能,对2ASK.2PSK.2FSK进行调制与解调的设计,并绘制出调制与解调后的波形,误码率的情况分析,软件仿真可在已有平台上实现。

1.2ASK代码主函数

close all clear all n=16;

fc=1000000; bitRate=1000000; N=50; %noise=ti; noise=10;

signal=source(n,N); %生成二进制代码

transmittedSignal=askModu(signal,bitRate,fc,N);%调制后信号 signal1=gussian(transmittedSignal,noise);%加噪声 configueSignal=demoASK(signal1,bitRate,fc,n,N);

source代码

function sendSignal=source(n,N) sendSignal=randint(1,n) bit=[];

for i=1:length(sendSignal) if sendSignal(i)==0 bit1=zeros(1,N); else

bit1=ones(1,N); end

bit=[bit,bit1]; end figure(1)

plot(1:length(bit),bit),title('transmitting of binary'),grid on; axis([0,N*length(sendSignal),-2,2]); end

askModu代码

function transmittedSignal=askModu(signal,bitRate,fc,N)%signal为输入信

号,bitrate为bit速率,fc调制信号频率,N %signal=[0 0 1 0 1 1 0 1]; % bitRate=1000000; % fc=1000000;

t=linspace(0,1/bitRate,N); c=sin(2*pi*t*fc); transmittedSignal=[]; for i=1:length(signal)

transmittedSignal=[transmittedSignal,signal(i)*c];

% N=32;

end

figure(2) %画调制图

plot(1:length(transmittedSignal),transmittedSignal);title('Modulation of ASK');grid on;

figure(3)%画频谱实部

m=0:length(transmittedSignal)-1; F=fft(transmittedSignal);

plot(m,abs(real(F))),title('ASK_frequency-domain analysis real'); grid on;

%figure(4) 画频谱虚部

%plot(m,imag(F));title('ASK_frequency-domain analysis imag'); %grid on; end

CheckRatePe代码

function PeWrong=CheckRatePe(signal1,signal2,s) rights=0; wrongs=0; for ki=1:s-2

if(signal1(ki)==signal2(ki)) rights=rights+1; else

wrongs=wrongs+1; end end

PeWrong=wrongs/(wrongs+rights); end

demoASK代码

function bitstream=demoASK(receivedSignal,bitRate,fc,n,N) load num

signal1=receivedSignal;

signal2=abs(signal1); %ÕûÁ÷

signal3=filter(num1,1,signal2); %LPF,°üÂç¼ì²¨ IN=fix(length(num1)/2); %ÑÓ³Ùʱ¼ä bitstream=[]; LL=fc/bitRate*N; i=IN+LL/2;

while (i<=length(signal3)) %Åоö bitstream=[bitstream,signal3(i)>=0.5]; i=i+LL; end

figure(6)

subplot(3,1,1); %接收波形

plot(1:length(signal1),signal1);title('Wave of receiving terminal(including noise)');grid on;

subplot(3,1,2);%接收整流后波形

plot(1:length(signal2),signal2);title('Wave of commutate');grid on; subplot(3,1,3);%包络检波波形

plot(1:length(signal3),signal3);title('Wave of LPF');grid on; bit=[];

for i=1:length(bitstream) if bitstream(i)==0 bit1=zeros(1,N); else

bit1=ones(1,N); end

bit=[bit,bit1]; end

figure(7)%解调后的二进制波形

plot(bit),title('binary of receiving terminal'),grid on; axis([0,N*length(bitstream),-2.5,2.5]); end

gussian代码 %加高斯白噪声

function signal=gussian(transmittedSignal,noise) signal=sqrt(2)*transmittedSignal; signal=awgn(signal,noise); figure(5)

plot(1:length(signal),signal);

title('Wave including noise'),grid on; end

fsk主函数代码

close all clear all

n=16;%二进制代码长度 f1=18000000;%频率1 f2=6000000;%频率2 bitRate=1000000;%bit速率 N=50;%码元宽度 %noise=ti;

noise=10;%家性噪声大小

signal=source(n,N);%产生二进制代码

transmittedSignal=fskModu(signal,bitRate,f1,f2,N);%调制 signal1=gussian(transmittedSignal,noise);%加噪声 configueSignal=demoFSK(signal1,bitRate,f1,f2,N);%解调

source代码%二进制信号产生函数

function sendSignal=source(n,N) sendSignal=randint(1,n) bit=[];

for i=1:length(sendSignal) if sendSignal(i)==0 bit1=zeros(1,N); else

bit1=ones(1,N); end

bit=[bit,bit1]; end figure(1)

plot(bit),title('transmitting of binary'),grid on; axis([0,N*length(sendSignal),-2.5,2.5]); end

fskModu代码%频率调制函数

function transmittedSignal=fskModu(signal,bitRate,f1,f2,N) t=linspace(0,1/bitRate,N); c1=sin(2*pi*t*f1);%调制信号1 c2=sin(2*pi*t*f2);%调制信号2 transmittedSignal=[]; for i=1:length(signal)%调制 if signal(i)==1

transmittedSignal=[transmittedSignal,c1]; else

transmittedSignal=[transmittedSignal,c2]; end end

figure(2) %画调制后波形图

plot(1:length(transmittedSignal),transmittedSignal);title('Modulation of FSK');grid on; figure(3) %画调制后频谱图

m=0:length(transmittedSignal)-1; F=fft(transmittedSignal);

plot(m,abs(real(F))),title('ASK_frequency-domain analysis real'); grid on; end

demoFSK代码

function bitstream=demoFSK(receivedSignal,bitRate,f1,f2,N) load num

signal1=receivedSignal;

signal2=filter(gaotong,1,signal1); %通过HPF,得到高通分量 signal3=abs(signal2); %整流

signal3=filter(lowpass,1,signal3); %通过低通,形成包络 bitstream=[];

IN1=fix(length(lowpass)/2)+fix(length(gaotong)/2); %延迟时间

bitstream1=[];

LL=N; %每个bit的抽样点数 i=IN1 +LL/2;

while (i<=length(signal3)) %判决

bitstream1=[bitstream1,signal3(i)>=0.5]; i=i+LL; end bitstream1 figure(5) subplot(3,1,1);

plot(1:length(signal1),signal1);title('Wave of receiving terminal(including noise)');grid on; subplot(3,1,2);

plot(1:length(signal2),signal2);title('After Passing HPF');grid on; subplot(3,1,3);

plot(1:length(signal3),signal3);title('After Passing LPF');grid on;

signal4=filter(daitong,1,signal1); %通过BPF得到低频分量 signal5=abs(signal4); %整流

signal5=filter(lowpass,1,signal5); %通过LPF,形成包络

IN2=fix(length(lowpass)/2)+fix(length(daitong)/2); %延迟时间 bitstream2=[];

LL=N; %每个bit的的抽样点数 i=IN2 +LL/2;

while (i<=length(signal5)) %判决

bitstream2=[bitstream2,signal5(i)>=0.5]; i=i+LL;

end bitstream2 figure(6) subplot(3,1,1);

plot(1:length(signal1),signal1);title('Wave of receiving terminal(including noise)');grid on; subplot(3,1,2);

plot(1:length(signal4),signal4);title('After Passing BPF');grid on; subplot(3,1,3);

plot(1:length(signal5),signal5);title('After Passing LPF');grid on;

for i=1:min(length(bitstream1),length(bitstream2)) %判决 if(bitstream1(i)>bitstream2(i)) bitstream(i)=1; else

bitstream(i)=0; end end bitstream

bit=[]; %接收端波形 for i=1:length(bitstream) if bitstream(i)==0 bit1=zeros(1,N); else

bit1=ones(1,N); end

bit=[bit,bit1]; end figure(7)

plot(bit),title('binary of receiving terminal'),grid on; axis([0,N*length(bitstream),-2.5,2.5]); end

CheckRatePe代码

function PeWrong=CheckRatePe(signal1,signal2,s) rights=0; wrongs=0; for ki=1:s-2

if(signal1(ki)==signal2(ki)) rights=rights+1; else

wrongs=wrongs+1;

end end

PeWrong=wrongs/(wrongs+rights); end

gussian代码

function signal=gussian(transmittedSignal,noise) signal=sqrt(2)*transmittedSignal; signal=awgn(signal,noise); figure(4)

plot(1:length(signal),signal),title('Adding Noise'); grid on; end

2psk主函数代码

close all clear all n=16;%二进制码长 fc=1000000;%载波频率 bitRate=1000000;信息频率 N=50;%码宽

noise=10;%信道加性噪声大小 signal=source(n,N);生成二进制代码

transmittedSignal=bpskModu(signal,bitRate,fc,N);对信号进行调制并进行频谱分析

signal1=gussian(transmittedSignal,noise)%加信道噪声 configueSignal=demoBPSK(signal1,bitRate,fc,n,N);%信号解调

source代码

function sendSignal=source(n,N) sendSignal=randint(1,n) bit=[];

for i=1:length(sendSignal) if sendSignal(i)==0 bit1=zeros(1,N); else

bit1=ones(1,N); end

bit=[bit,bit1]; end figure(1)

plot(bit),title('transmitting of binary'),grid on;

axis([0,N*length(sendSignal),-2.5,2.5]); end

bpskModu代码

function transmittedSignal=bpskModu(signal,bitRate,fc,N) t=linspace(0,1/bitRate,N); c1=sin(2*pi*t*fc); c2=sin(2*pi*t*fc + pi); transmittedSignal=[]; for i=1:length(signal) if signal(i)==1

transmittedSignal=[transmittedSignal,c1]; else

transmittedSignal=[transmittedSignal,c2]; end end

figure(2) % 画调制图

plot(1:length(transmittedSignal),transmittedSignal);title('Modulation of BPSK');grid on;

figure(3)%画频谱图

m=0:length(transmittedSignal)-1; F=fft(transmittedSignal);

plot(m,abs(real(F))),title('BPSK_frequency-domain analysis real'); grid on; end

CheckRatePe代码

function PeWrong=CheckRatePe(signal1,signal2,s) rights=0; wrongs=0; for ki=1:s-2

if(signal1(ki)==signal2(ki)) rights=rights+1; else

wrongs=wrongs+1; end end

PeWrong=wrongs/(wrongs+rights);

end

demoBPSK代码

function bitstream=demoBPSK(receivedSignal,bitRate,fc,n,N) load num %读取num存储的低通滤波用的数据 signal1=receivedSignal; t=linspace(0,1/bitRate,N); c=sin(2*pi*t*fc); signal=[]; for i=1:n

signal=[signal,c]; end

signal2=signal1.*signal; %乘同频同相sin

signal3=filter(num1,1,signal2); %LPF,包络检波3 IN=fix(length(num1)/2); %Ñ延迟时间 bitstream=[]; LL=fc/bitRate*N; i=IN+LL/2;

while (i<=length(signal3)) %判决 bitstream=[bitstream,signal3(i)>=0]; i=i+LL; end

figure(5)

subplot(3,1,1);%画接收的包含噪声的波形

plot(1:length(signal1),signal1);title('Wave of receiving terminal(including noise)');grid on;

subplot(3,1,2);%相干解调波形

plot(1:length(signal2),signal2);title('After Multipling sin Fuction');grid on;

subplot(3,1,3);%包络检波波形

plot(1:length(signal3),signal3);title('Wave of LPF');grid on; bit=[];

for i=1:length(bitstream) if bitstream(i)==0 bit1=zeros(1,N); else

bit1=ones(1,N); end

bit=[bit,bit1]; end

figure(6)二进制接收信号波形

plot(bit);title('binary of receiving terminal');grid on; axis([0,N*length(bitstream),-2.5,2.5]); end

gussian代码

function signal=gussian(transmittedSignal,noise) signal=sqrt(2)*transmittedSignal; signal=awgn(signal,noise); figure(4)

plot(1:length(signal),signal),grid on; title('Adding noise') end

三种调制方式的性能比较:

load PeRate; load PeRatep; %补偿误差

fpeask(15)=1e-3; fpefsk(9)=1e-3; fpepsk(24)=0.002; fpepsk(26)=1e-3; figure(1)

semilogy(-6:length(fpeask)-7,fpeask,-6:length(fpefsk)-7,fpefsk,-30:length(fpepsk)-31,fpepsk),grid on; title('Analysis Of Bit Error Rate'); legend('ASK','FSK','PSK'); xlabel('r/dB'); ylabel('Pe');

figure(2)

semilogy(-6:length(fpefsk)-7,fpeask);grid on; title('Bit Error Rate Of ASK'); xlabel('r/dB'); ylabel('PeASK'); figure(3)

semilogy(-6:length(fpefsk)-7,fpefsk);grid on; title('Bit Error Rate Of FSK'); xlabel('r/dB'); ylabel('PeFSK'); figure(4)

semilogy(-16:length(fpepsk)-17,fpepsk);grid on; title('Bit Error Rate Of PSK'); axis([-16,10,1e-3,1]);

xlabel('r/dB'); ylabel('PePSK');

三.程序与调制解调波形 3.1 2ASK波形 1随机信号产生

2ASK信号调制

3信号噪声附加

4接受信号解调

5解调出的基带信号

3.2.FSK 1随机信号产生

2FSK信号调制

3信号噪声附加 4接受信号解调

5解调出的基带信号

3.3PSK

1.随机信号产生

2.FSK信号调制

3信号噪声附加

4接受信号解调

5解调出的基带信号

3.4误码率分析 1.2ASK误码率分析

2.2FSK误码率分析

3.2PSK误码率分析

4性能比较

四.课程设计心得体会

通过本次的课程设计受益匪浅,感触良多。首先是进一步加深了对于通信原理,信号与系统,matlab程序设计等课程的理解和认知,也形象地把书本上的知识联系到了实际的应用和生产,随着比较及理解了2ASK,2PSK,2FSK的各种性能及优缺点,提高了自己分析和比较问题的能力,拓宽了自己的思路,掌握了各种全面以及辩证的看待问题的眼光,也逐步认识到自己的不足并加以克服和改正,从而得出正确结论。更以后的课题研究奠定了坚实的基础。

五.参考文献

(1)通信原理(第6版) 樊昌信 .国防工业出版社 (2)数字通信原理 黎洪松 西安电子系科技大学出版社 (3)MATLAB程序设计教程 刘卫国 中国水利水电出版社 (4)通信原理 李晓峰 清华大学出版社

(5)数字处理及matlab仿真 张雪英 电子工业出版社 (6)通信系统仿真 冯玉涛 国防工业出版社 (7)matlab通信工程仿真 张德丰 机械工业出版社

(8)通信原理—基于Matlab的计算机仿真 郭文彬 桑林 北京邮电大学出版社 (9)MATLAB通信工程仿真 张德丰 机械工业出版社

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务