《移动通信原理与应用》——QPSK调制解调仿真

目录

一、QPSK调制与解调流程图:

二、仿真运行结果:

三、MATLAB仿真代码:


一、QPSK调制与解调流程图:

QPSK调制流程图:

QPSK解调流程图:

二、仿真运行结果:

1、Figure1:为发送端比特流情况图:

从Figure1看出发送端发送的比特流信息...[ak,bk]...情况:奇数进入I路,偶数进入Q路。比特进入I路与Q路情况如下表总结所示:

|------|--------|---------|---------|--------|------|--------|-------|--------|-------|-------|
| K | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 数据比特 | 1 | 1 | -1 |-1 | -1 |-1 | -1| 1 | 1|1 | -1|-1 | 1|-1 | -1|-1 | 1|-1 | 1|-1 |
| I路 | 1 | -1 | -1 | -1 | 1 | -1 | 1 | -1 | 1 | 1 |
| Q路 | 1 | -1 | -1 | 1 | 1 | -1 | -1 | -1 | -1 | -1 |

2、Figure2:与载波相乘之后的I路与Q路的波形图以及QPSK的波形图:

3、Figure3:QPSK经过解调之后得到的输出二进制信息比特以及解调得到的I路与Q路上面的比特波形图:

从Figure3看出接收端接收且解调的比特流信息...[ak,bk]...进入I路与Q路的情况:奇数进入I路,偶数进入Q路。比特进入I路与Q路情况以及解调得出的总比特数据如下表总结所示:

|------|--------|---------|---------|--------|------|--------|-------|--------|-------|-------|
| K | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 数据比特 | 1 | 1 | -1 |-1 | -1 |-1 | -1| 1 | 1|1 | -1|-1 | 1|-1 | -1|-1 | 1|-1 | 1|-1 |
| I路 | 1 | -1 | -1 | -1 | 1 | -1 | 1 | -1 | 1 | 1 |
| Q路 | 1 | -1 | -1 | 1 | 1 | -1 | -1 | -1 | -1 | -1 |

将Figure3与Figure1的I路与Q路的比特信息及波形图进行对比,发现接收端与发送端的I路与Q路的比特信息以及波形一致;

将发送端的输入比特流信息...[ak,bk]...以及波形与QPSK解调得出的比特信息流以及波形进行对比,发现比特信息流与对应的波形均一致。说明本次QPSK的调制与解调仿真实验成功!

三、MATLAB 仿真代码:

Matlab 复制代码
clear all;clc;
N=20; % The number of bits
T=1;% The bit period
fc=2; % The carrier frequency
Fs=100;% the sample frequency
bitstream=randi([0,1],1,N);% randomly generate the bitstream
bitstream=2*bitstream-1;% 0 to -1; 1 to 1
l=[];Q=[];
for i=1:N
  if mod(i,2)~=0
    l=[l,bitstream(i)];
else
    Q=[Q,bitstream(i)];
  end
end

% using plot to compare bitsteam, I, Q
bit_data=[];
for i=1:N
  bit_data=[bit_data,bitstream(i)*ones(1,T*Fs)];
end
l_data=[];Q_data=[];
for i=1:N/2
  l_data=[l_data,l(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,l_data);legend('l Bitstream')
subplot(3,1,3)
plot(t,Q_data);legend('Q Bitstream')

% carrier signal
bit_t=0:1/Fs:2*T-1/Fs;
l_carrier=[];Q_carrier=[];
for i=1:N/2
  l_carrier=[l_carrier,l(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=l_carrier+Q_carrier;
% plot
figure();
subplot(3,1,1)
plot(t,l_carrier);legend('l signal')
subplot(3,1,2)
plot(t,Q_carrier);legend('Q signal')
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);
% demodulate
for i=1:N/2
  l_output=QPSK_receive(1,(i-1)*length(bit_t)+1:i*length(bit_t)).*cos(2*pi*fc*bit_t);
  if sum(l_output)>0
    l_recover(i)=1;
  else
    l_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)>0
    Q_recover(i)=1;
  else
    Q_recover(i)=-1;
  end
end

bit_recover=[];
for i=1:N
  if mod(i,2)~=0
   bit_recover=[bit_recover,l_recover((i-1)/2+1)];
  else
   bit_recover=[bit_recover,Q_recover(i/2)];
  end
end

% using plot to compare bitsteam, I, Q
recover_data=[];
for i=1:N
  recover_data=[recover_data,bit_recover(i)*ones(1,T*Fs)];
end
l_recover_data=[];Q_recover_data=[];
for i=1:N/2
  l_recover_data=[l_recover_data,l_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,l_recover_data);legend('l Bitstream')
subplot(3,1,3)
plot(t,Q_recover_data);legend('Q Bitstream')
subplot(3,1,1)
plot(t,recover_data);legend('Bitstream')
相关推荐
达不溜的日记38 分钟前
ADC模数转换器详解(基于STM32)
stm32·单片机·嵌入式硬件·信息与通信·信号处理
点灯小铭1 小时前
基于MATLAB的车牌识别系统
开发语言·单片机·数码相机·matlab·毕业设计·课程设计
茜茜西西CeCe1 小时前
数字图像处理-图像的基本运算
图像处理·人工智能·计算机视觉·matlab·图像的基本运算
lingchen190616 小时前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
AORO202519 小时前
三防手机的三防是指什么?推荐一款实用机型
网络·5g·智能手机·制造·信息与通信
星马梦缘20 小时前
Matlab机器人工具箱使用5 轨迹规划
matlab·机器人·轨迹规划·空间插值
机器学习之心1 天前
MATLAB基于GM(灰色模型)与LSTM(长短期记忆网络)的组合预测方法
matlab·lstm
星马梦缘1 天前
Matlab机器人工具箱7 搬运动画展示
matlab·机器人·仿真·逆解
chao1898441 天前
基于MATLAB的线性判别分析(LDA)人脸识别实现
开发语言·matlab
极度畅想1 天前
脑电数据预处理十六:自动化阈值检测原理与实践
信号处理·脑电数据处理·eeg预处理·伪迹去除·脑电预处理·阈值检测·数据剔除