当前位置:文档之家› 通信原理matlab课程设计

通信原理matlab课程设计


(4) 2DPSK是利用前后相邻码元的载波相对相位变化传递数字
信息,所以又称相对相移键控。
三、MENU源代码
• • • • • • • • • • • • • • • • • • s=menu('通信原理','2ASK','2PSK','2FSK','2DPSK') switch s case 1,scolor='2ASK'; n=8;N=100;K=4; a=randiቤተ መጻሕፍቲ ባይዱt(1,n); bita=[];sl=[]; bitRate=1e3;fc=1e3;%载频1KHZ t=linspace(0,1/bitRate,N); for i=1:length(a) if a(i)==0 bit1=zeros(1,N); else bit1=ones(1,N); end bita=[bita,bit1]; c=sin(2*pi*t*fc); sl=[sl c]; end
(1)2ASK信号的产生方法通常有两种:模拟调制和键 控法。解调有相干解调和非相干解调。
(2) 一个2FSK信号可以看成是两个不同载波的2ASK信号的叠加。其解调 和解调方法和ASK差不多。2FSK信号的频谱可以看成是f1和f2的两个 2ASK频谱的组合。
(3) 2PSK以载波的相位变化作为参考基准的,当基带信号为0时相位相对于 初始相位为0, 当基带信号为1时相对于初始相位为180°。 2DPSK信号的 解调,主要有两种方法,即相位比较法和相干解调法
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
%======相乘器=============% t=linspace(0,1/bitRate,N); c1=sin(2*pi*t*fc); c2=sin(2*pi*t*fc*2); sia=[]; sib=[]; for i=1:n sia=[sia,c1]; sib=[sib,c2]; end siga=sa.*sia;%乘同频同相sia sigb=sb.*sib;%乘同频同相sib subplot(K1,2,3);plot(siga,'LineWidth',1.5),grid on;title('相乘器'); subplot(K1,2,4);plot(sigb,'LineWidth',1.5),grid on;title('相乘器'); %========LPF================% Fs=5e3;%抽样频率400HZ [b1,a1]=ellip(4,0.1,40,[50]*2/Fs);%设计IIR低通滤波器 [b2,a2]=ellip(4,0.1,40,[50]*2/Fs);%设计IIR低通滤波器 sfa=filter(b1,a1,siga);%信号通过该滤波器,输出信号sfa sfb=filter(b2,a2,sigb);%信号通过该滤波器,输出信号sfb subplot(K1,2,5);plot(sfa,'LineWidth',1.5),grid on;title('LPF'); subplot(K1,2,6);plot(sfb,'LineWidth',1.5),grid on;title('LPF'); %===========抽样判决==================% s2a=[];s2b=[]; LL=fc/bitRate*N; i1=LL/2;i2=LL; bitb=[]; while (i1<=length(sfa)) %判决过程 s2a=[s2a,sfa(i1)>=0]; i1=i1+LL; end while (i2<=length(sfb)) s2b=[s2b,sfb(i2)<=0]; i2=i2+LL; end
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
for i=1:length(sf2) if sf2(i)==0 bit1=zeros(1,N); else bit1=ones(1,N); end bitb=[bitb,bit1]; end figure(1); subplot(K,1,4); plot(bitb,'LineWidth',1.5),grid on;title('解调后信号'); axis([0,N*length(sf2),-2.5,2.5]); case 2,scolor='2PSK'; l=linspace(0,pi,50);% 数据初始化 t=linspace(0,9*pi,450); b=1:1:9; out=1:1:450; f=1:1:450; g=1:1:450; w1=2 %正弦波f1的频率,可以根据自己想要的频率在此改写 %正弦波f2的频率,可以根据自己想要的频率在此改写 f1=sin(w1*l); figure(1); f2=sin(w1*l+pi); figure(1); subplot(2,1,1),plot(l,f1),axis([0 pi -1.2 1.2]),xlabel('t'),ylabel('f1');%画出f1信号波形 subplot(2,1,2),plot(l,f2),axis([0 pi -1.2 1.2]),xlabel('t'),ylabel('f2');%画出f2信号波形 a=[0 1 0 0 0 1 1 0 1] for i=1:9 %2pSK编码 if a(i)==0 for k=1:50 %如果二进制原码为0则输出f1波形 out(k+50*(i-1))=f1(k); end
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
else for j=1:50 out(j+50*(i-1))=f2(j); %r如果二进制原码为1则输出f2波形 end end end for i=1:9 %2PSK解码 n=0;m=0; for j=1:50 if out(j+50*(i-1))-f1(j)==0 n=n+1; else if out(j+50*(i-1))-f2(j)==0 m=m+1; end end end if n>m b(i)=0; else b(i)=1; end end b for i=1:9 %画出解码后的波形 ,包括原码和解码出的码,进行对比 for j=1+50*(i-1):50*i f(j)=a(i); g(j)=b(i); end end figure(2); subplot(3,1,1),plot(t,f),axis([0 9*pi -0.2 1.2]),xlabel('t'),ylabel('数字基带调制原码'); subplot(3,1,2),plot(t,out),axis([0 9*pi -1.2 1.2]),xlabel('t'),ylabel('调制好的波形'); subplot(3,1,3),plot(t,g),axis([0 9*pi -0.2 1.2]),xlabel('t'),ylabel('解码得到的码'); [Num,Rat]=biterr(f,g)
跳过程序到仿真现象
• • • • • • • • • • • • • • • • • • • • • • • • • •

figure(1); subplot(K,1,1);plot(bita,'LineWidth',1.5),title('基带信号'),grid on;axis([0,N*length(a),-2.5,2.5]); tz=bita*6.*sl; subplot(K,1,2);plot(tz,'LineWidth',1.5);title('ASK调制后信号');grid on; signal=awgn(tz,80,'measured'); subplot(K,1,3);plot(signal,'LineWidth',1.5),grid on;title('信号+噪声') Fs=3e3; [b,a]=ellip(4,0.1,40,[999.9,1000.1]*2/Fs);%设计IIR带通滤波器,阶数为4,通带纹波0.1,阻带衰减40DB sf=filter(b,a,signal);%信号通过该滤波器 figure(2); K1=4; subplot(K1,1,1);plot(sf,'LineWidth',1.5),grid on;title('BPF') signal2=abs(sf); %乘同频同相sin subplot(K1,1,2);plot(signal2,'LineWidth',1.5),grid on;title('全波整流器'); Fs=3e3;%抽样频率400HZ [b,a]=ellip(4,0.1,40,[50]*2/Fs);%设计IIR低通滤波器 sf1=filter(b,a,signal2);%信号通过该滤波器,输出信号sf subplot(K1,1,3);plot(sf1,'LineWidth',1.5),grid on;title('LPF'); sf2=[]; LL=fc/bitRate*N; i=LL/2; bitb=[]; while (i<=length(sf1)) %判决 sf2=[sf2,sf1(i)>=0.001]; i=i+LL; end
相关主题