QPSK调制解调方框图如下所示

A方式 框图如下所示:

A方式代码如下所示

clc
clearNm = 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:Nmsig_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:NmMsg_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:NmMsg_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:Nmsig_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:50sc_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:Nmif Msg_bin_a(ik)==1if Msg_bin_b(ik)==1sig_out = [sig_out,gt11];elsesig_out = [sig_out,gt10];endelseif Msg_bin_b(ik)==1  sig_out = [sig_out,gt01];elsesig_out = [sig_out,gt00];endend
endfigure(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]);%添加噪声之后的信号,噪声单位SNRdBwp=[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:NmMsg_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:Nmsig_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:Nmif Msg_q(i) == Msg_rec_q(i)count = count + 1;end
end
Pe = (Nm-count)/Nm;

运行结果如下所示

B方式框图如下所示:

B方式代码如下所示:

clc
clearNm = 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:Nmsig_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:NmMsg_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:NmMsg_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:Nmsig_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:Nmif Msg_bin_a(ik) == 1sig_a = [sig_a,gta1];elsesig_a = [sig_a,gta0];endif Msg_bin_b(ik) == 1sig_b = [sig_b,gtb1];elsesig_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:NmMsg_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:Nmsig_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:Nmif Msg_q(i) == Msg_rec_q(i)count = count + 1;end
end
Pe = (Nm-count)/Nm;

运行结果如下所示:

 

 

出错时把pesnrf换成awgn即可

通信原理 简易QPSK AB方法的调制解调及星座图的matlab实现相关推荐

  1. 通信原理 简易QPSK、OQPSK、Π/4QPSK的功率谱的matlab实现

    QPSK代码如下所示: clc clearNm = 100; snrdB = 10;%信噪比20dB Ts = 2;%原始码元间隔 N_sample = 1000; dt = Ts/N_sample; ...

  2. 通信原理(3)——模拟通信系统的幅度调制(AM DSB SSB VSB)和角度调制(PM FM)

    通信原理(3)--调制 Ⅰ. 绪论 调制:把消息信号寄托到载波的某个参数上,形成已调信号. 解调:调制的逆过程,从已调信号中恢复消息信号. 一.调制的目的 无线通信中,匹配信道特性,提高发射信号的频率 ...

  3. 16QAM调制解调系统误码率和星座图的matlab仿真

    目录 一.理论基础 二.核心程序 三.仿真结论 一.理论基础 16QAM全称是​正交幅度调制​,英文Quadrature Amplitude Modulation的缩略语简称,意思是正交幅度调制,是一 ...

  4. 【知识点】IQ调制 IQ数据 星座图

    将以下链接依次看完,就能明白IQ调制 通信里 星座图 到底是什么意思啊? [通信原理 入坑之路]-- 详解IQ调制以及星座图原理 什么是IQ调制,为什么要用IQ调制?什么是高阶调制 数字调制系列:如何 ...

  5. matlab误码率计算函数,matlab通信系统性能估计(误码率、误比特率、眼图、星座图….) | 学步园...

    biterr函数 biterr函数用来计算错误比特的个数和误比特率,其调用格式为: [number,ratio] = biterr(x,y) [number,ratio] = biterr(x,y,k ...

  6. 双极性根升余弦信号qpsk_【MATLAB】【通信原理】QPSK的调制与解调

    参考网站:https://www.ilovematlab.cn/thread-97735-1-1.html 其实几乎完全照搬了该网站上面的方法,只是代码.画图方式稍微有点不同. 实验代码: clear ...

  7. 通信原理学习笔记5-2:数字调制——连续相位和恒包络问题(非线性功放、连续相位CP FSK信号、最小频移键控MSK、GMSK)

    为了最大程度利用非线性功放,需要降低信号PAPR,这要求信号具有恒包络特性 信道带宽有限,需要降低信号带外泄露(进而传输失真小),要求信号具有连续相位特性(从而高频成分少) 波形连续和恒包络之间存在矛 ...

  8. 【通信原理】第七章 -- 数字调制技术

    文章目录 数字带通传输系统 数字调制技术 二进制数字调制原理 二进制振幅键控 2ASK基本原理 功率谱密度 二进制频移键控 2FSK基本原理 二进制相移键控 2PSK基本原理 二进制差分相移键控 二进 ...

  9. 通信原理学习笔记2-1:模拟调制——相干解调的载波恢复、锁相环(平方环/Costas环)、变频/混频技术

    原始信号为基带模拟信号,要想在空气中传播信号,必须使用频带信号(频率高则天线长度降低,且可能进行频分复用等) 要产生频带信号,需要频谱搬移,这就是调制:基带信号经过调制,得到已调信号/调制信号/频带信 ...

最新文章

  1. CentOS 安装配置memcached
  2. 全文检索工具迅搜的安装和体验(可用于自建中文全文搜索引擎)
  3. zk ui_高级ZK:异步UI更新和后台处理–第1部分
  4. diy服务器个人主机_Re:从零开始的服务器-微型服务器DIY手记
  5. 编程 mcq_MCQ | 8255 PPI(可编程外围接口)
  6. vsCode切换分支git
  7. Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
  8. 《LabVIEW 虚拟仪器程序设计从入门到精通(第二版)》一导读
  9. 主席树入门+博客推荐
  10. 解决smtp出现(500, b'Error: bad syntax')
  11. dm数据库 linux版下载,达梦(DM)数据库Linux部署安装
  12. PM也要学会每天反省
  13. thrift 问题梳理
  14. java中的迭代是什么意思_JAVA里的 迭代 具体是指什么意思
  15. balser相机连接设置设置步骤
  16. 鸿蒙归蝶的反弹,诛仙前传鸿蒙副本任务详细攻略解读
  17. markdown 合并单元格、表格内换行
  18. 2017京东校招终结者问题
  19. 把1,2,3,4,5,6,7,8,9九个数分成三组,各个数字使用一次
  20. OSChina 周五乱弹 —— 性感海星在线翘臀

热门文章

  1. QoS服务质量三DiffServ模型报文的标记及PHB
  2. 免费编辑pdf的方法,想在这里分享一下
  3. 让Mplayer或SMplayer成为网络电视客户端(安装Mplayer以Fedora为例)
  4. einsum方法详解(爱因斯坦求和)
  5. [享学Eureka] 十、简洁巧妙的小工具TimedSupervisorTask:自动调节执行间隔的周期性任务
  6. pygame飞机大战 小游戏
  7. 无盘网吧服务器入侵,无盘网吧局域网病毒清除全过程
  8. 完成智能查找阻力位的核心代码
  9. 漫画的过去、人的自我认知和任何视觉艺术的图画词汇表
  10. 在ARM335X的环境下实现NFS加载根文件系统