MATLAB仿真的ASKPSKFSK性能比较和分析报告Word格式文档下载.docx
《MATLAB仿真的ASKPSKFSK性能比较和分析报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MATLAB仿真的ASKPSKFSK性能比较和分析报告Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
2/26
1.22FSK
2FSK可以看做是2个不同频率的2ASK的叠加,其调制与解调方法与2ASK差不多,主要频率F1和F2,不同的组合产生所要求的2FSK调制信号。
cosA1?
公式如下:
k1s(t)?
FSK2?
t,当a?
0cosA?
k2
1.32PSK
2PSK以载波的相位变化为基准,载波的相位随数字基带序列信号的1或者0而改变,通常用已经调制完的载波的0或者π表示数据1或者0,每种相位与之一3/26
一对应。
二.数字调制技术的仿真实现
本课程设计需要借助MATLAB的M文件编程功能,对2ASK..2PSK.2FSK进行调制与解调的设计,并绘制出调制与解调后的波形,误码率的情况分析,软件仿真可在已有平台上实现。
1.2ASK代码主函数
allclose
allclear
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代码
sendSignal=source(n,N)function4/26
sendSignal=randint(1,n)bit=[];
i=1:
length(sendSignal)forsendSignal(i)==0ifbit1=zeros(1,N);
elsebit1=ones(1,N);
end
bit=[bit,bit1];
figure
(1);
onplot(1:
length(bit),bit),title('
transmittingofbinary'
),grid
axis([0,N*length(sendSignal),-2,2]);
askModu代码
functiontransmittedSignal=askModu(signal,bitRate,fc,N)%signal为输入信号,bitrate为bit速率,fc调制信号频率,N
%signal=[00101101];
%bitRate=1000000;
%fc=1000000;
%N=32;
t=linspace(0,1/bitRate,N);
c=sin(2*pi*t*fc);
transmittedSignal=[];
length(signal)fortransmittedSignal=[transmittedSignal,signal(i)*c];
画调制图figure
(2)%'
Modulationplot(1:
length(transmittedSignal),transmittedSignal);
title(;
);
gridonofASK'
画频谱实部figure(3)%m=0:
length(transmittedSignal)-1;
F=fft(transmittedSignal);
);
plot(m,abs(real(F))),title('
ASK_frequency-domainanalysisreal'
;
gridon画频谱虚部%figure(4)%plot(m,imag(F));
title('
ASK_frequency-domainanalysisimag'
%gridon;
endCheckRatePe代码
5/26
PeWrong=CheckRatePe(signal1,signal2,s)functionrights=0;
wrongs=0;
ki=1:
s-2for(signal1(ki)==signal2(ki))ifrights=rights+1;
else
wrongs=wrongs+1;
endPeWrong=wrongs/(wrongs+rights);
demoASK代码
bitstream=demoASK(receivedSignal,bitRate,fc,n,N)functionnumload
signal1=receivedSignal;
%?
á
÷
signal2=abs(signal1);
%LPF,°
ü
ì
2¨
signal3=filter(num1,1,signal2);
ó
3ù
ê
±
IN=fix(length(num1)/2);
bitstream=[];
LL=fc/bitRate*N;
i=IN+LL/2;
D?
while(i<
=length(signal3))
bitstream=[bitstream,signal3(i)>
=0.5];
i=i+LL;
figure(6)接收波形subplot(3,1,1);
%plot(1:
length(signal1),signal1);
Waveofreceiving
onterminal(includingnoise)'
grid
接收整流后波形subplot(3,1,2);
%;
gridoncommutate'
plot(1:
length(signal2),signal2);
Waveof
包络检波波形subplot(3,1,3);
length(signal3),signal3);
WaveofLPF'
bit=[];
length(bitstream)forbitstream(i)==0if
bit1=zeros(1,N);
else6/26
bit1=ones(1,N);
解调后的二进制波形figure(7)%;
),gridonplot(bit),title('
binaryofreceivingterminal'
axis([0,N*length(bitstream),-2.5,2.5]);
gussian代码%加高斯白噪声
signal=gussian(transmittedSignal,noise)functionsignal=sqrt
(2)*transmittedSignal;
signal=awgn(signal,noise);
figure(5)
plot(1:
length(signal),signal);
on'
Waveincludingnoise'
),gridtitle(end//////////////////////////////////////////////////////////////////////////////////////////////////////////////////fsk主函数代码///
二进制代码长度n=16;
%1f1=18000000;
%频率2频率f2=6000000;
%速率bitRate=1000000;
%bit码元宽度N=50;
%%noise=ti;
家性噪声大小noise=10;
%产生二进制代码signal=source(n,N);
%调制transmittedSignal=fskModu(signal,bitRate,f1,f2,N);
%解调configueSignal=demoFSK(signal1,bitRate,f1,f2,N);
%
source代码%二进制信号产生函数
sendSignal=source(n,N)functionsendSignal=randint(1,n)bit=[];
length(sendSignal)forsendSignal(i)==0if7/26
axis([0,N*length(sendSignal),-2.5,2.5]);
fskModu代码%频率调制函数
transmittedSignal=fskModu(signal,bitRate,f1,f2,N)functiont=linspace(0,1/bitRate,N);
1调制信号c1=sin(2*pi*t*f1);
%2调制信号c2=sin(2*pi*t*f2);
%transmittedSignal=[];
调制i=1:
length(signal)%forsignal(i)==1iftransmittedSignal=[transmittedSignal,c1];
transmittedSignal=[transmittedSignal,c2];
画调制后波形图figure
(2)%
plot(1:
Modulation
onofFSK'
figure(3)%画调制后频谱图
m=0:
ongrid
demoFSK代码
bitstream=demoFSK(receivedSignal,bitRate,f1,f2,N)functionnumload
,得到高通分量通过signal2=filter(gaotong,1,signal1);
%HPF8/26
整流%signal3=abs(signal2);
通过低通,形成包络%signal3=filter(lowpass,1,signal3);
IN1=fix(length(lowpass)/2)+fix(length(gaotong)/2);
%延迟时间bitstream1=[];
的抽样点数每个bitLL=N;
%i=IN1+LL/2;
判决%while(i<
bitstream1=[bitstream1,signal3(i)>
bitstream1figure(5)subplot(3,1,1);
gridonterminal(includingnoise)'
subplot(3,1,2);
gridon'
AfterPassingHPF'
title(subplot(3,1,3);
onPassingLPF'
gridplot(1:
After
得到低频分量BPFsignal4=filter(daitong,1,signal1);
%通过整流%signal5=abs(signal4);
,形成包络LPF%通过signal5=filter(lowpass,1,signal5);
延迟时间%IN2=fix(length(lowpass)/2)+fix(length(daitong)/2);
bitstream2=[];
bit的的抽样点数LL=N;
%每个i=IN2+LL/2;
判决(i<
=length(signal5))%whilebitstream2=[bitstream2,signal5(i)>
bitstream2figure(6)subplot(3,1,1);
gridterminal(includingnoise)'
onsubplot(3,1,2);
onPassing'
AfterBPF'
length(signal4),signal4);
on);
length(signal5),signal5);
AfterPassingLPF'
判决i=1:
min(length(bitstream1),length(bitstream2))for%9/26
(bitstream1(i)>
bitstream2(i))ifbitstream(i)=1;
bitstream(i)=0;
bitstream
接收端波形%bit=[];
length(bitstream)for
bitstream(i)==0if
else
figure(7);
end
CheckRatePe代码
s-2for(signal1(ki)==signal2(ki))if
rights=rights+1;
gussian代码
figure(4));
length(signal),signal),title('
AddingNoise'
10/26
gridonend2psk主函数代码
二进制码长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);
length(sendSignal)forsendSignal(i)==0if
on),gridplot(bit),title('
bpskModu代码
transmittedSignal=bpskModu(signal,bitRate,fc,N)functiont=linspace(0,1/bitRate,N);
c1=sin(2*pi*t*fc);
c2=sin(2*pi*t*fc+pi);
11/26
length(signal)forsignal(i)==1iftransmittedSignal=[transmittedSignal,c1];
画调制图figure
(2)%
onofBPSK'
画频谱图figure(3)%m=0:
'
BPSK_frequency-domainanalysisreal'
plot(m,abs(real(F))),title(;
demoBPSK代码
bitstream=demoBPSK(receivedSignal,bitRate,fc,n,N)function存储的低通滤波用的数据num%读取loadnumsignal1=receivedSignal;
signal=[];
nfor
signal=[signal,c];
12/26
sin%乘同频同相signal2=signal1.*signal;
3%LPF,包络检波signal3=filter(num1,1,signal2);
延迟时间IN=fix(length(num1)/2);
=length(signal3))%whilebitstream=[bitstream,signal3(i)>
=0];
figure(5)画接收的包含噪声的波形subplot(3,1,1);
%plot(1:
相干解调波形subplot(3,1,2);
AfterMultiplingsin
onFuction'
title(
length(bitstream)forbitstream(i)==0ifbit1=zeros(1,N);
二进制接收信号波形figure(6);
gridonplot(bit);
axis([0,N*length(bitstream),-2.5,2