本博客环境为Matlab2018 ,软件版本不同可能会有些出入,需要稍作修改。

QPSK调制与解调
仿真要求:
画出QPSK信号产生的信息、I路、Q路信号对比图以及接收端解调的I路,Q 路,信息恢复的对比图。

代码如下:

clear all;clc;
N=20; % 输入的比特
T=1; % 比特周期
fc=2; % 载波频率
Fs=100; % 采样频率
bitstream=randi([0,1],1,N); % 随机产生的比特流
bitstream= 2*bitstream-1; % 0 to -1; 1 to 1 单极性变成双极性
I=[];Q=[];
for i=1:Nif mod(i,2)~=0I=[I,bitstream(i)]; %寄数路数据elseQ=[Q,bitstream(i)]; %偶数路数据end
end% using plot to compare bitsteam, I, Q
bit_data=[];
for i=1:N %一个周期100个点bit_data=[bit_data, bitstream(i)*ones(1,T*Fs)];
end
I_data=[];Q_data=[];
for i=1:N/2I_data=[I_data,I(i)*ones(1,T*Fs*2)]; %符号周期是比特周期的两倍Q_data=[Q_data,Q(i)*ones(1,T*Fs*2)];
end% plot
figure();
t= 0:1/Fs:N*T-1/Fs;
subplot(3,1,1)
plot(t,bit_data);legend('Bitstream') %比特流
subplot(3,1,2)
plot(t,I_data);legend('I Bitstream') % I路
subplot(3,1,3)
plot(t,Q_data);legend('Q Bitstream') % Q路% carrier signal
bit_t=0:1/Fs:2*T-1/Fs; %时间戳
I_carrier=[];Q_carrier=[]; %载波信号
for i= 1:N/2I_carrier=[I_carrier,I(i)*cos(2*pi*fc*bit_t)];Q_carrier=[Q_carrier,Q(i)*cos(2*pi*fc*bit_t+pi/2)];
end% transmit signal
QPSK_signal=I_carrier+Q_carrier; %I路信号与Q路信号的和
% plot
figure();
subplot(3,1,1)
plot(t,I_carrier);legend('I signal') %I信号
subplot(3,1,2)
plot(t,Q_carrier);legend('Q signal ') %Q信号
subplot(3,1,3)
plot(t,QPSK_signal);legend('QPSK signal') %两信号的和
snr=1; % signal to noise rate信噪比
% Receive singal
QPSK_receive= awgn(QPSK_signal,snr); %接收端=原来的信号+噪声
% 恢复信号
for i=1:N/2I_output=QPSK_receive(1 ,(i-1)*length(bit_t)+1:i*length(bit_t)).*cos(2*pi*fc*bit_t);if sum(I_output)>0I_recover(i)= 1;elseI_recover(i)=-1;end Q_output=QPSK_receive(1,(i-1)*length(bit_t)+1:i*length(bit_t)).*cos(2*pi*fc*bit_t+pi/2);if sum(Q_output)>0Q_recover(i)=1;elseQ_recover(i)=-1;end
endbit_recover=[]; %并串变换
for i=1:Nif mod(i,2)~=0bit_recover= [bit_recover,I_recover((i-1)/2+1)]; %奇给Ielsebit_recover= [bit_recover,Q_recover(i/2)]; %偶给Qend
end% using plot to compare bitsteam, I, Q
recover_data=[];
for i=1:Nrecover_data=[recover_data,bit_recover(i)*ones(1,T*Fs)];
end
I_recover_data =[];Q_recover_data=[];
for i=1:N/2I_recover_data=[I_recover_data,I_recover(i)*ones(1,T*Fs*2)]; Q_recover_data=[Q_recover_data,Q_recover(i)*ones(1,T*Fs*2)];
end
% plot
figure();
t=0:1/Fs:N*T-1/Fs;
subplot(3,1,2)
plot(t,I_recover_data);legend('I Bitstream')
subplot(3,1,3)
plot(t,Q_recover_data);legend('Q Bitstream')
subplot(3,1,1)
plot(t,recover_data);legend('Bitstream')

仿真结果如下所示:
因为比特流是随机产生的,各自运行结果应稍有出入。


Matlab-QPSK调制与解调 QPSK信号产生的信息、I路、Q路信号对比图以及接收端解调的I路,Q 路,信息恢复的对比图相关推荐

  1. 单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 频域均衡是从校正系统的频率特性出发,利用一个可调滤波器的频率的频率特性去补偿信道或系统的频率特性,使 ...

  2. m基于QPSK调制解调的无线图像传输matlab仿真,包括扩频解扩均衡等模块

    目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 软件无线电在无线通信领域被称为是自模拟通信过渡到数字通信之后的又一次革命,在军用和民用方面都 ...

  3. QPSK调制与解调-MATLAB基带仿真

    QPSK调制与解调-MATLAB基带仿真 仿真步骤 产生一定长度的值为0或1的随机序列 s ( t ) s(t) s(t). 将 s ( t ) s(t) s(t)映射到QPSK星座图上的星座点. 产 ...

  4. matlab ellip传递函数,BPSK和QPSK调制解调原理及MATLAB程序

    <BPSK和QPSK调制解调原理及MATLAB程序>由会员分享,可在线阅读,更多相关<BPSK和QPSK调制解调原理及MATLAB程序(10页珍藏版)>请在人人文库网上搜索. ...

  5. 正交解调 matlab,正交相位偏移键控(qpsk)调制解调系统simulink(matlab)建模分析毕业论文...

    正交相位偏移键控(qpsk)调制解调系统simulink(matlab)建模分析毕业论文 重庆邮电大学本科毕业设计(论文)- I -编 号: 审定成绩: 设计(论文)题目: 正交相位偏移键控(QPSK ...

  6. QPSK调制解调仿真matlab

    QPSK是MPSK的一种,对于理解MPSK有着很大的帮助. 在理解MPSK中,有以下几个难点: 什么是串并转换 如何把QPSK转换成两路2PSK信号 解调时如何判决 下面给出我结合全网与自己的理解的Q ...

  7. MATLAB仿真QPSK调制信号通过AWGN信道的误符号率和误比特率分析

    MATLAB仿真QPSK调制信号通过AWGN信道的误符号率和误比特率分析 形式:程序 程序实现功能: 仿真正交相移键控QPSK信号调制的基带数字通信系统通过AWGN信道的误符号率(SER)和误比特率( ...

  8. matlab基带信号速率,如何用MATLAB产生25Gbaud的基带QPSK调制信号

    如何用MATLAB产生25Gbaud的基带QPSK调制信号 包括生成随机符号序列,进行QPSK调制,过采样,脉冲成型滤波和降采样.有错误敬请指正. 参数设置:symbol rate=25Gbaud D ...

  9. 【定时同步系列4】QPSK调制+OM定时(FFT实现及频域补偿)+信号分段处理+误码率曲线之MATLAB仿真(复信号模型)

    关注公号[逆向通信猿]更精彩!!! 仿真结果 对于QPSK调制,仿真结果如下: **分析:**可以看出,补偿前的定时相位约为-0.1,补偿后的相位在0附近波动,但由于没有进行环路滤波(可采用卡尔曼滤波 ...

最新文章

  1. 介绍下JSP如何进行自动刷新
  2. 网站优化排名提升不发愁,这几点你掌握了吗?
  3. 可以看游资的app_跟随一线游资操作,轻松收获涨停板
  4. 【行为型模式】《大话设计模式》——读后感 (10)无尽加班何时休?——状态模式...
  5. vue-property-decorator 提供 OO 的风格 Vue Component 方便类型声明
  6. twitter java_Twitter算法面试题详解(Java实现)
  7. 那些炫酷的特效--QQ空间+VUE
  8. QCC3040---读取flash UID
  9. 乔布斯其人的演讲技巧
  10. win7如何启用计算机的无线功能,win7系统如何开启wifi热点|win7系统配置wifi热点的方法...
  11. Java中的Socket是什么?
  12. 燃石、泛生子会师纳斯达克,从招股书看异同(文末附IPO招股书)
  13. win10打开 Windows凭据管理器 0x800706BA
  14. 鸿蒙系统首批机型,鸿蒙系统名单确认,麒麟9000机型首批,众多机型要说再见!...
  15. C++ 后室·无限#1 游戏制作实录(RPG类型游戏)
  16. new和delete,malloc和free
  17. Java如何dump文件
  18. 基于FPGA的DS18B20温度测量以及数码管显示
  19. flyway使用--基础
  20. 那些年遇到的奇葩老板

热门文章

  1. 【从零单排HBase 01】从一无所知到5分钟快速了解HBase
  2. 消息队列 mq_queue,报错: message too long
  3. 测试pppoe服务器性能,PPPOE服务器测试
  4. 会议OA之待开会议所有会议
  5. HTML简易网页练习
  6. Hutool工具包Excel工具使用
  7. 车载充电器 3.3KW 车载充电机OBC方案
  8. fastadmin表格之自定义搜索
  9. 加班整理出来的MySQL数据库基本操作送给大家,非常详细...
  10. Oracle-根据生日计算年龄(岁,月,天)