QPSK调制解调方框图如下所示
A方式 框图如下所示:

A方式代码如下所示
clc clear Nm = 100;%100个码元 snrdB = 20;%信噪比20dB Ts = 2;%原始码元间隔 N_sample = 1000; dt = Ts/N_sample;%采样间隔 Msg = randi(4,1,Nm); Msg_q = Msg-1;%转换为四进制,为产生的信号 sig_Msg_q = []; for ik = 1:Nm sig_Msg_q = [sig_Msg_q,Msg_q(ik)*ones(1,2*N_sample)]; end t =0:dt/2:Nm*Ts-dt/2; figure(1); plot(t,sig_Msg_q);axis([0,10,-1,4]);%四进制消息码电平 Msg_bin = []; for ik = 1:Nm Msg_bin = [Msg_bin,fix(Msg_q(ik)/2)]; Msg_bin = [Msg_bin,Msg_q(ik)-2*fix(Msg_q(ik)/2)]; end Msg_bin_a = []; Msg_bin_b = []; for ik = 1:Nm Msg_bin_a = [Msg_bin_a,Msg_bin(2*ik-1)]; Msg_bin_b = [Msg_bin_b,Msg_bin(2*ik)]; end%分成a,b两列 sig_Msg_bin = []; for ik = 1:Nm sig_Msg_bin = [sig_Msg_bin,Msg_bin(2*ik-1)*ones(1,N_sample)]; sig_Msg_bin = [sig_Msg_bin,Msg_bin(2*ik)*ones(1,N_sample)]; end figure(2); plot(t,sig_Msg_bin);axis([0,10,-1,2]); wavNum = 20;%wavNum单码元三角函数波周期数 Ph = 0:2*wavNum*pi/N_sample:2*pi*wavNum*(Ts-1/N_sample);%Ph为相位 gt11 = cos(Ph.*ones(1, Ts*N_sample)+pi/2); gt10 = cos(Ph.*ones(1, Ts*N_sample)); gt01 = cos(Ph.*ones(1, Ts*N_sample)+pi); gt00 = cos(Ph.*ones(1, Ts*N_sample)+pi*3/2); ph_out_sig= [3/2*pi,pi,0,pi/2]; sc_sig_out = []; for ik = 1:50 sc_sig_out =[sc_sig_out,cos(ph_out_sig(Msg(ik)))+i*sin(ph_out_sig(Msg(ik)))]; end sc_out = sc_sig_out; sig_out = []; for ik = 1:Nm if Msg_bin_a(ik)==1 if Msg_bin_b(ik)==1 sig_out = [sig_out,gt11]; else sig_out = [sig_out,gt10]; end else if Msg_bin_b(ik)==1 sig_out = [sig_out,gt01]; else sig_out = [sig_out,gt00]; end end end figure(3);plot(t,sig_out);axis([0,1,-1.5,1.5]);%总输出波形 sig_channel = awgn(sig_out,snrdB); figure(4);plot(t,sig_channel);axis([0,1,-1.5,1.5]);%添加噪声之后的信号,噪声单位SNRdB wp=[wavNum-5 wavNum+5]*2/N_sample; ws=[wavNum-10 wavNum+10]*2/N_sample; rp=3; rs=30; [N,wn]=cheb2ord(wp,ws,rp,rs); [b,a]=cheby2(N,rp,wn,'bandpass');%切比雪夫带通滤波 sig_bandpass = filter(b,a,sig_channel); figure(5);plot(t,sig_bandpass);axis([0,1,-1.5,1.5]);%经过带通滤波器之后的信号 Ph1 = 0:2*wavNum*pi/N_sample:2*pi*wavNum*(Nm*Ts-1/N_sample); sig_local1 = cos(Ph1.*ones(1, Nm*Ts*N_sample)); sig_local2 = -1*sin(Ph1.*ones(1, Nm*Ts*N_sample)); sig_mul_a = sig_local1.*sig_bandpass; sig_mul_b = sig_local2.*sig_bandpass; figure(6); subplot(2,1,1);plot(t,sig_mul_a);axis([0,0.1,-1.5,1.5]); subplot(2,1,2);plot(t,sig_mul_b);axis([0,0.1,-1.5,1.5]); wp=(0.5)*2/N_sample; ws=(1.5)*2/N_sample; Rp=3;Rs=30; [N,wn]=cheb2ord(wp,ws,rp,rs); [b,a]=cheby2(N,rp,wn,'low'); sig_lp_a = filter(b,a,sig_mul_a); sig_lp_b = filter(b,a,sig_mul_b); figure(7); subplot(2,1,1);plot(t,sig_lp_a);axis([0,1,-1.5,1.5]); subplot(2,1,2);plot(t,sig_lp_b);axis([0,1,-1.5,1.5]);%切比雪夫低通滤波 t1 = Ts*N_sample/2:Ts*N_sample:2*Nm*N_sample-Ts*N_sample/2; Msg_out_a = []; Msg_out_b = []; lvl_rec_a = []; lvl_rec_b = []; for ik = 1:length(t1) Msg_out_a = [Msg_out_a,sign(sig_lp_a(t1(ik)))]; Msg_out_b = [Msg_out_b,sign(sig_lp_b(t1(ik)))]; lvl_rec_a = [lvl_rec_a,sig_lp_a(t1(ik))]; lvl_rec_b = [lvl_rec_b,sig_lp_b(t1(ik))]; end sc_rec = lvl_rec_a+lvl_rec_b*i; Msg_rec_bin = []; for ik = 1:Nm Msg_rec_bin = [Msg_rec_bin,Msg_out_a(ik)]; Msg_rec_bin = [Msg_rec_bin,Msg_out_b(ik)]; end Msg_rec_q = (Msg_out_a+1)/2*2+(Msg_out_b+1)/2; sig_Msg_rec_bin = []; sig_Msg_rec_q = []; for ik = 1:Nm sig_Msg_rec_bin = [sig_Msg_rec_bin,Msg_rec_bin(2*ik-1)*ones(1,N_sample)]; sig_Msg_rec_bin = [sig_Msg_rec_bin,Msg_rec_bin(2*ik)*ones(1,N_sample)]; sig_Msg_rec_q = [sig_Msg_rec_q,Msg_rec_q(ik)*ones(1,2*N_sample)]; end figure(8); subplot(211);plot(t,sig_Msg_rec_bin);axis([0,10,-2,2]); subplot(212);plot(t,sig_Msg_rec_q);axis([0,10,-1,4]); scatterplot(sc_out); scatterplot(sc_rec); count = 0; for i = 1:Nm if Msg_q(i) == Msg_rec_q(i) count = count + 1; end end Pe = (Nm-count)/Nm;
讯享网
运行结果如下所示








B方式框图如下所示:


B方式代码如下所示:
讯享网clc clear Nm = 1000; snrdB = -10;%信噪比20dB Ts = 2;%原始码元间隔 N_sample = 1000; dt = Ts/N_sample;%采样间隔 Msg = randi(4,1,Nm); Msg_q = Msg-1;%转换为四进制,为产生的信号 sig_Msg_q = []; for ik = 1:Nm sig_Msg_q = [sig_Msg_q,Msg_q(ik)*ones(1,2*N_sample)]; end t =0:dt/2:Nm*Ts-dt/2; figure(1); plot(t,sig_Msg_q);axis([0,10,-1,4]);%四进制消息码电平 Msg_bin = []; for ik = 1:Nm Msg_bin = [Msg_bin,fix(Msg_q(ik)/2)]; Msg_bin = [Msg_bin,Msg_q(ik)-2*fix(Msg_q(ik)/2)]; end Msg_bin_a = []; Msg_bin_b = []; for ik = 1:Nm Msg_bin_a = [Msg_bin_a,Msg_bin(2*ik-1)]; Msg_bin_b = [Msg_bin_b,Msg_bin(2*ik)]; end%分成a,b两列 sig_Msg_bin = []; sig_Msg_bin_a = []; sig_Msg_bin_b = []; for ik = 1:Nm sig_Msg_bin = [sig_Msg_bin,Msg_bin(2*ik-1)*ones(1,N_sample)]; sig_Msg_bin = [sig_Msg_bin,Msg_bin(2*ik)*ones(1,N_sample)]; sig_Msg_bin_a = [sig_Msg_bin_a,Msg_bin_a(ik)*ones(1,2*N_sample)]; sig_Msg_bin_b = [sig_Msg_bin_b,Msg_bin_b(ik)*ones(1,2*N_sample)]; end figure(2); subplot(311);plot(t,sig_Msg_bin);axis([0,10,-1,2]);title('二进制码'); subplot(312);plot(t,sig_Msg_bin_a);axis([0,10,-1,2]);title('二进制A通道码'); subplot(313);plot(t,sig_Msg_bin_b);axis([0,10,-1,2]);title('二进制B通道码'); wavNum = 20;%wavNum单码元三角函数波周期数 Ph = 0:2*wavNum*pi/N_sample:2*pi*wavNum*(Ts-1/N_sample);%Ph为相位 gta1 = cos(Ph.*ones(1, Ts*N_sample)); %a通道消息码为1 gta0 = -1*cos(Ph.*ones(1, Ts*N_sample));%a通道消息码为0 gtb1 = -1*sin(Ph.*ones(1, Ts*N_sample)); %b通道消息码为1 gtb0 = sin(Ph.*ones(1, Ts*N_sample));%b通道消息码为0 sc_out = (Msg_bin_a*2-1)+(Msg_bin_b*2-1)*i; sig_a = []; sig_b = []; for ik = 1:Nm if Msg_bin_a(ik) == 1 sig_a = [sig_a,gta1]; else sig_a = [sig_a,gta0]; end if Msg_bin_b(ik) == 1 sig_b = [sig_b,gtb1]; else sig_b = [sig_b,gtb0]; end end sig_out = sig_a+sig_b; figure(3); subplot(311);plot(t,sig_out);axis([0,10,-1,2]); subplot(312);plot(t,sig_a);axis([0,10,-1,2]); subplot(313);plot(t,sig_b);axis([0,10,-1,2]); sig_channel = pesnrf(sig_out,snrdB); wp=[wavNum-0.5 wavNum+0.5]*2/N_sample; ws=[wavNum-1.5 wavNum+1.5]*2/N_sample; rp=3; rs=30; [N,wn]=cheb2ord(wp,ws,rp,rs); [b,a]=cheby2(N,rp,wn,'bandpass');%切比雪夫带通滤波 sig_bandpass = filter(b,a,sig_channel); figure(4); subplot(311);plot(t,sig_out);axis([0,10,-1,2]);title('输出'); subplot(312);plot(t,sig_channel);axis([0,10,-1,2]);title('信道输出'); subplot(313);plot(t,sig_bandpass);axis([0,10,-1,2]);title('带通滤波器输出'); Ph1 = 0:2*wavNum*pi/N_sample:2*pi*wavNum*(Nm*Ts-1/N_sample); sig_local1 = cos(Ph1.*ones(1, Nm*Ts*N_sample)); sig_local2 = -1*sin(Ph1.*ones(1, Nm*Ts*N_sample)); sig_mul_a = sig_local1.*sig_bandpass; sig_mul_b = sig_local2.*sig_bandpass; figure(5); subplot(211);plot(t,sig_mul_a);axis([0,10,-2,2]);title('A通道相乘信号'); subplot(212);plot(t,sig_mul_b);axis([0,10,-2,2]);title('B通道相乘信号'); wp=(0.25)*2/N_sample; ws=(1)*2/N_sample; Rp=3;Rs=30; [N,wn]=cheb2ord(wp,ws,rp,rs); [b,a]=cheby2(N,rp,wn,'low'); sig_lp_a = filter(b,a,sig_mul_a); sig_lp_b = filter(b,a,sig_mul_b); figure(6); subplot(211);plot(t,sig_lp_a);axis([0,10,-2,2]);title('A通道低通滤波输出信号'); subplot(212);plot(t,sig_lp_b);axis([0,10,-2,2]);title('B通道低通滤波输出信号'); t1 = Ts*N_sample/2:Ts*N_sample:2*Nm*N_sample-Ts*N_sample/2; Msg_out_a = []; Msg_out_b = []; lvl_rec_a = []; lvl_rec_b = []; for ik = 1:length(t1) Msg_out_a = [Msg_out_a,sign(sig_lp_a(t1(ik)))]; Msg_out_b = [Msg_out_b,sign(sig_lp_b(t1(ik)))]; lvl_rec_a = [lvl_rec_a,sig_lp_a(t1(ik))]; lvl_rec_b = [lvl_rec_b,sig_lp_b(t1(ik))]; end sc_rec = lvl_rec_a+lvl_rec_b*i; Msg_rec_bin = []; for ik = 1:Nm Msg_rec_bin = [Msg_rec_bin,Msg_out_a(ik)]; Msg_rec_bin = [Msg_rec_bin,Msg_out_b(ik)]; end Msg_rec_q = (Msg_out_a+1)/2*2+(Msg_out_b+1)/2; sig_Msg_out_a = []; sig_Msg_out_b = []; sig_Msg_rec_bin = []; sig_Msg_rec_q = []; for ik = 1:Nm sig_Msg_out_a = [sig_Msg_out_a,Msg_out_a(ik)*ones(1,2*N_sample)]; sig_Msg_out_b = [sig_Msg_out_b,Msg_out_b(ik)*ones(1,2*N_sample)]; sig_Msg_rec_bin = [sig_Msg_rec_bin,Msg_rec_bin(2*ik-1)*ones(1,N_sample)]; sig_Msg_rec_bin = [sig_Msg_rec_bin,Msg_rec_bin(2*ik)*ones(1,N_sample)]; sig_Msg_rec_q = [sig_Msg_rec_q,Msg_rec_q(ik)*ones(1,2*N_sample)]; end figure(7); subplot(411);plot(t,sig_Msg_out_a);axis([0,10,-2,2]);title('A通道输出码元'); subplot(412);plot(t,sig_Msg_out_b);axis([0,10,-2,2]);title('B通道输出码元'); subplot(413);plot(t,sig_Msg_rec_bin);axis([0,10,-2,2]);title('接收到的二进制码元'); subplot(414);plot(t,sig_Msg_rec_q);axis([0,10,-1,4]);;title('接收到的四进制码元'); scatterplot(sc_out);title('理论星座图'); scatterplot(sc_rec);title('实际星座图'); count = 0; for i = 1:Nm if Msg_q(i) == Msg_rec_q(i) count = count + 1; end end Pe = (Nm-count)/Nm;
运行结果如下所示:







出错时把pesnrf换成awgn即可

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/74088.html