MATLAB使用眼图分析QPSK通信系统接收端匹配滤波后的信号

server/2024/10/5 20:16:27/

文章目录

  • 前言
  • 一、MATLAB仿真代码
  • 二、仿真结果


前言

本文完成以下内容:
(1)建立一个QPSK传输系统,并引入EsNo=20dB(SNR=0dB)的噪声,接收端对带噪信号进行匹配滤波。
(2)分别画出成形滤波器输出信号的实部波形和匹配滤波器输出信号的实部波形。
(3)分别画出成形滤波器输出信号的2D彩色眼图,和匹配滤波器输出信号的2D彩色眼图,2D彩色眼图中,颜色强度与给定时间输入信号幅度的概率密度函数(PDF)成比例。


一、MATLAB仿真代码

代码如下:

clc
clear all
close all
%% Create a QPSK transmission system
% Initialize system parameters
Fs = 10000;
Rs = 100;
nSamps = Fs/Rs;
rollOff = 0.5;
M = 4;% comm.QPSKModulator System object
hMod = comm.QPSKModulator;% Square root raised cosine filters
filtSpec = fdesign.pulseshaping(nSamps,'Square root raised cosine',...'Nsym,Beta',6,rollOff);
hTxFlt = design(filtSpec); hTxFlt.PersistentMemory = true;
hRxFlt = copy(hTxFlt); hTxFlt.Numerator = hTxFlt.Numerator*nSamps;% Generate modulated and pulse shaped signal
msgLen = 1000;
msgData = randi([0 M-1],msgLen,1);
msgSymbols = step(hMod, msgData);
msgTx = hTxFlt.filter(upsample(msgSymbols, nSamps));% Create an comm.AWGNChannel System object
EsNo = 20;
SNR = EsNo - 10*log10(nSamps);
hChan = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)',...'SNR', SNR);
hChan.SignalPower = (msgTx' * msgTx)/ length(msgTx);% Modulated signal through AWGN channel
msgRx = step(hChan, msgTx);% Matched filtering
msgRxMf = hRxFlt.filter(msgRx);%% Plot the Tx filtered in-phase signal and the Nf filtered in-phase signal
t = 0:1/Fs:50/Rs-1/Fs;
idx = round(t*Fs+1);
figure(); 
subplot(211)
plot(t, real(msgTx(idx)));
title('Modulated, filtered in-phase signal');
xlabel('Time (sec)');
ylabel('Amplitude');
grid on;subplot(212)
plot(t, real(msgRxMf(idx)));
title(['Modulated, filtered noisy in-phase signal, Es/No = ' ...num2str(EsNo) ' dB']);  
xlabel('Time (sec)');
ylabel('Amplitude');
grid on;%% eye diagram
% Create an eye diagram object
eyeObj = commscope.eyediagram(...'SamplingFrequency', Fs, ...'SamplesPerSymbol', nSamps, ...'SymbolsPerTrace', 2, ...'MinimumAmplitude', -1.5, ...'MaximumAmplitude', 1.5, ...'OperationMode', 'Complex Signal', ...'PlotType', '2D Color', ...'PlotTimeOffset', 0);eyeObjN = copy(eyeObj);% Update the first eye diagram object with the transmitted signal
eyeObj.update(msgTx);% Update the second eye diagram object with the received signal
eyeObjN.update(msgRxMf);

二、仿真结果

代码运行结果画图如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



http://www.ppmy.cn/server/127615.html

相关文章

UE5蓝图实战:打造自定义摄像机视野控制

在虚拟仿真与可视化系统中,摄像机视野的控制至关重要。用户通常通过键盘的W、A、S、D键进行前后左右移动,使用Q和E键实现上下移动;同时,通过鼠标右键进行视角的旋转,并利用鼠标滚轮来调整视野的缩放。这篇文章将详细介…

CentOS 7 系统中安装与配置 Telnet 服务详解(使用非root用户登录)

目录 前言1. 安装 Telnet 服务端1.1 更新系统软件源1.2 安装 Telnet 和 xinetd 2. 增加具有管理员权限的用户2.1 添加新用户2.2 配置 sudo 权限 3. 启动和管理 Telnet 服务3.1 启动服务3.2 设置服务自启动 4. 配置防火墙允许 Telnet 通信5. 配置 Telnet 服务6. 添加 pts/0 终端…

鸿蒙harmonyos next flutter通信之EventChannel获取ohos系统时间

建立通道 flutter代码: EventChannel eventChannel EventChannel("com.xmg.eventChannel"); ohos代码: //定义eventChannelprivate eventChannel: EventChannel | null null//定义eventSinkprivate eventSink: EventSink | null null//建…

AI不可尽信

看到某项目有类似这样的一段代码 leaves : make([]int, 10) leaves leaves[:0]没理解这样的连续两行,有何作用? 初始化一个长度和容量都为10的切片,接着把切片长度设置为0 即如下demo: (在线地址) package mainimport "fmt"func main() {leaves : make([]int, 1…

HTB:Explosion[WriteUP]

目录 连接至HTB服务器并启动靶机 1.What does the 3-letter acronym RDP stand for? 2.What is a 3-letter acronym that refers to interaction with the host through a command line interface? 3.What about graphical user interface interactions? 4.What is the…

闭源与开源嵌入模型比较以及提升语义搜索效果的技术探讨

上图为执行语义搜索前的聚类演示 ,嵌入技术是自然语言处理的核心组成部分。虽然嵌入技术的应用范围广泛,但在检索应用中的语义搜索仍是其最常见的用途之一。 尽管知识图谱等可以提升检索的准确率和效率,但标准向量检索技术仍然具有其实用价值…

HTML+CSS表单控件(11个案例+代码+效果图)

目录 单行文本框 (text) 案例:制作一个单行文本框 1.代码 2.效果 密码输入框 (password) 案例:制作密码输入框 1.代码 2.效果 单选按钮 (radio) 案例:制作单选按钮 1.代码 2.效果 复选框 (checkbox) 案例:制作一个复选框 1.代码 2.效果 普通按钮 (button) 案例:制作一个普通按钮…

二叉树深度学习——将二叉搜索树转化为排序的双向链表

1.题目解析 题目来源:LCR 155.将二叉搜索树转化为排序的双向链表 测试用例 2.算法原理 首先题目要求原地进行修改并且要求左指针代表前驱指针,右指针代表后继指针,所以思路就是 1.使用前序遍历创建两个指针cur、prev代表当前节点与前一个节点…