当前位置: 首页 > news >正文

OFDM系统仿真

1️⃣ OFDM的原理

1.1 介绍

OFDM是一种多载波调制技术,将输入数据分配到多个子载波上,每个子载波上可以独立使用 QAM、PSK 等传统调制技术进行调制。这些子载波之间互相正交,从而可以有效利用频谱并减少干扰。

1.2 OFDM的核心

  1. 多载波调制
    高速数据流被拆分成多个并行的低速数据流,每个低速数据流被分配到正交的子载波上
  2. 子载波正交性
    子载波的正交性是OFDM的核心,正交性保证了不同子载波之间不会相互干扰
  3. 使用FFT/IFFT的实现
    OFDM使用IFFT生成正交的子载波信号,而在接收端通过FFT恢复频域信号

1.3 OFDM系统架构

在这里插入图片描述

以MQAM调制为例,假设OFDM系统的输入信号是串行的二进制码元,每个二进制码元的持续时间为 T b T_\mathrm{b} Tb

分帧:首先,将输入信号分帧,每一帧包含F个二进制码元,即包含F比特。

分组:然后针对每一帧来说,每帧都会再进一步分组,即把F个二进制码元分成N组,每组中的比特数可以不同。例如,第 i i i组包含的比特数是 b i b_i bi

码元转换:将每组中的 b i b_i bi个比特看作一个 M i M_i Mi进制的码元 B i B_i Bi b i b_i bi M i M_i Mi的关系是 b i = l o g 2 M i b_i=log_2M_i bi=log2Mi

串并转换:此步骤将串行的N个码元 B i B_i Bi变成N路并行码元 B i B_i Bi。并行码元的持续时间相同,都是 T B = F ⋅ T b T_B=F·T_b TB=FTb

在这里插入图片描述

映射:在MQAM调制中,一个并行码元 B i B_i Bi可以用平面上的一个点表示,将 M i M_i Mi进制的码元 B i B_i Bi变成一一对应的复数 B i \boldsymbol{B_i} Bi的过程称为映射过程。例如 B i B_i Bi包含4bit “1100”,那就是16进制码元,进行的是16QAM调制,假设星座图如下图所示,则其相位为45°,振幅为 A / 2 A/\sqrt{2} A/2 。此映射过程将“1100”映射为复数形式 B i = ( A / 2 ) e j π / 4 \boldsymbol{B_i}=(A/\sqrt{2})e^{j\pi/4} Bi=(A/2 )e/4

在这里插入图片描述
调制:N路并行码元 B i B_i Bi对N个子载波进行不同的MQAM调制。由于各个并行码元 B i B_i Bi包含比特数不同,所以调制方式不同,举个例子,若并行码元 B i B_i Bi包含4bit,那就是16QAM调制;包含8bit就是64QAM调制

IDFT:使用IDFT实现正交频分复用

  • 最低子载波频率设定:为了用IDFT实现OFDM,先将OFDM的最低子载波频率设定为0。这是为了满足IDFT公式: s ( k ) = 1 K ∑ n = 0 K − 1 S ( n ) e j ( 2 π / K ) n k , k = 0 , 1 , 2 , ⋯ , K − 1 s(k)=\frac{1}{\sqrt{K}} \sum_{n=0}^{K-1} \boldsymbol{S}(n) \mathrm{e}^{\mathrm{j}(2 \pi / K) n k} \quad ,k=0,1,2, \cdots, K-1 s(k)=K 1n=0K1S(n)ej(2π/K)nk,k=0,1,2,,K1在n=0时,其右端第一项的指数因子等于1的条件,方便后续数学运算和信号处理。

  • IDFT项数设定与等效复码元序列生成:假设IDFT的项数为K,设置K=2N,即IDFT的项数等于子信道数目N的2倍。根据下述共轭对称性条件:

    若信号的时域函数 s ( k ) s(k) s(k) 是实函数,则其 K K K 点 DFT 的值 S ( n ) \boldsymbol{S}(n) S(n) 一定满足对称性条件: S ( K − k ) = S ∗ ( k ) k = 0 , 1 , 2 , ⋯ , K − 1 \boldsymbol{S}(K-k)=\boldsymbol{S}^*(k) \quad k=0,1,2, \cdots, K-1 S(Kk)=S(k)k=0,1,2,,K1式中: S ∗ ( k ) \boldsymbol{S}^*(k) S(k) S ( k ) \boldsymbol{S}(k) S(k) 的复共轭。

    从N个并行复数码元序列 { B i } \left\{\boldsymbol{B_i}\right\} {Bi} i = 0 , 1 , ⋯ , N − 1 ) i=0,1, \cdots, N-1) i=0,1,,N1) 生成 K = 2 N K=2 N K=2N 【将 IDFT 项数设为2N】个等效复数码元序列 { B n ′ } ( \left\{\boldsymbol{B_n}^{\prime}\right\}( {Bn}( n = 0 , 1 , ⋯ , 2 N − 1 ) n=0,1, \cdots, 2 N-1) n=0,1,,2N1),具体规则如下:
    ① 当 n = 1 , 2 , ⋯ , N − 1 n=1,2, \cdots, N-1 n=1,2,,N1 时, B K − n − 1 ′ = B n ∗ ( B n ∗ \boldsymbol{B}_{K-n-1}^{\prime}=\boldsymbol{B}_n^* \quad\left(B_n^*\right. BKn1=Bn(Bn B n B_n Bn 的共轭复数)。
    ② 当 n = N , N + 1 , ⋯ , 2 N − 2 n=N, N+1, \cdots, 2 N-2 n=N,N+1,,2N2 时, B K − n − 1 ′ = B K − n − 1 \boldsymbol{B}_{K-n-1}^{\prime}=\boldsymbol{B}_{K-n-1} BKn1=BKn1
    B 0 ′ = Re ⁡ ( B 0 ) \boldsymbol{B}_0^{\prime}=\operatorname{Re}\left(B_0\right) B0=Re(B0) ,即取 B 0 \boldsymbol{B}_0 B0 的实部。
    B K − 1 ′ = B 2 N − 1 ′ = Im ⁡ ( B 0 ) \boldsymbol{B}_{K-1}^{\prime}=\boldsymbol{B}_{2 N-1}^{\prime}=\operatorname{Im}\left(\boldsymbol{B}_0\right) BK1=B2N1=Im(B0) ,即取 B 0 \boldsymbol{B}_0 B0 的虚部。

    补充:为什么一定要K=2N?
    OFDM 系统最终需要生成实值的时域信号进行传输(实信号在实际硬件中更易处理和传输)。IDFT 具有这样的特性:当频域序列满足一定的共轭对称性质时,经过 IDFT 变换后得到的时域序列是实值的。通过将 IDFT 项数设为 2 N 2 N 2N ,可以利用这一性质,通过对 N N N 个并行复数码元序列构建出具有共轭对称性质的 2 N 2 N 2N 个等效复数码元序列(如前面提到的通过特定的对称规则生成),从而确保经过 IDFT 后得到实值的时域信号。

  • OFDM信号的离散形式:将生成的新码元序列 { B n ′ } \left\{\boldsymbol{B}_n^{\prime}\right\} {Bn} 作为频域信号代入IDFT公式,得到时域离散信号:
    e ( k ) = 1 K ∑ n = 0 K − 1 B n ′ e j ( 2 π / K ) n k ( k = 0 , 1 , ⋯ , K − 1 ) e(k)=\frac{1}{\sqrt{K}} \sum_{n=0}^{K-1} \boldsymbol{B}_n^{\prime} \mathrm{e}^{\mathrm{j}(2 \pi / K) n k} \quad(k=0,1, \cdots, K-1) e(k)=K 1n=0K1Bnej(2π/K)nk(k=0,1,,K1)
    这里的 e ( k ) e(k) e(k) 是离散的,且 e ( k ) = e ( k T B / K ) e(k)=e\left(k T_{\mathrm{B}} / K\right) e(k)=e(kTB/K),即在离散的时间点 k T B / K k T_{\mathrm{B}} / K kTB/K 上对连续的 OFDM 信号 e ( t ) e(t) e(t) 进行抽样得到了 e ( k ) e(k) e(k)

循环前缀:对每个 OFDM 符号添加循环前缀,以对抗多径效应等引起的干扰,它是在时域上操作的【OFDM信号长啥样??? 例如,50个OFDM符号,每个符号64个子载波,那矩阵大小就是64×50,加8个循环前缀的话,就会变成72×50】

并串转换:此时的信号 e ( k ) e(k) e(k) 在时域上还是以并行的形式存在,为了后续能够进行 D/A 转换以及在实际信道中传输【因为D/A 转换器通常接收串行的信号】,需要将这些并行的离散信号进行并串转换,将其变为串行的离散信号序列

通过D/A转换得到连续形式:离散抽样信号 e ( k ) e(k) e(k)经过数模(D/A)转换后就得到OFDM 信号的连续时间表达式:
e ( t ) = 1 K ∑ n = 0 K − 1 B n ′ e j ( 2 π / T B ) n t ( 0 ⩽ t ⩽ T B ) e(t)=\frac{1}{\sqrt{K}} \sum_{n=0}^{K-1} \boldsymbol{B}_n^{\prime} \mathrm{e}^{\mathrm{j}\left(2 \pi / T_{\mathrm{B}}\right) n t} \quad\left(0 \leqslant t \leqslant T_{\mathrm{B}}\right) e(t)=K 1n=0K1Bnej(2π/TB)nt(0tTB)
它是从离散抽样信号 e ( k ) e(k) e(k) 推导而来的,体现了 OFDM 信号在整个时间区间 [ 0 , T B ] \left[0, T_{\mathrm{B}}\right] [0,TB] 上的连续变化情况。在这个表达式中,每一项 B n ′ e j ( 2 π / T B ) n t \boldsymbol{B}_n^{\prime} \mathrm{e}^{\mathrm{j}\left(2 \pi / T_{\mathrm{B}}\right) n t} Bnej(2π/TB)nt 都代表一个子载波信号,不同的 n n n 对应不同的子载波,通过对这些子载波信号进行叠加,就得到了完整的 OFDM 信号 e ( t ) e(t) e(t)

  • 子载波频率:子载波频率 f k = n / T B ( n = 0 , 1 , ⋯ , N − 1 ) f_k=n / T_{\mathrm{B}}(n=0,1, \cdots, N-1) fk=n/TB(n=0,1,,N1) 。在 OFDM 系统中,子载波是承载信息的关键元素。这个公式表明子载波频率是等间隔分布的,间隔为 1 / T B 1 / T_{\mathrm{B}} 1/TB T B T_{\mathrm{B}} TB是并行码元的持续时间】 。从物理意义上讲,不同的子载波频率使得各个子载波能够在频域上相互正交,从而在相同的时间和带宽资源下,实现多个子载波同时传输不同信息,提高了频谱利用率。

上变频:由于实际通信中信号需要在特定高频频段传输,后续会用上变频将OFDM信号频谱搬移到指定高频为止

相关文章:

OFDM系统仿真

1️⃣ OFDM的原理 1.1 介绍 OFDM是一种多载波调制技术,将输入数据分配到多个子载波上,每个子载波上可以独立使用 QAM、PSK 等传统调制技术进行调制。这些子载波之间互相正交,从而可以有效利用频谱并减少干扰。 1.2 OFDM的核心 多载波调制…...

基于单片机的盲人智能水杯系统(论文+源码)

1 总体方案设计 本次基于单片机的盲人智能水杯设计,采用的是DS18B20实现杯中水温的检测,采用HX711及应力片实现杯中水里的检测,采用DS1302实现时钟计时功能,采用TTS语音模块实现语音播报的功能,并结合STC89C52单片机作…...

安心即美的生活方式

如果你的心是安定的,那么,外界也就安静了。就像陶渊明说的:心远地自偏。不是走到偏远无人的边荒才能得到片刻清净,不需要使用洪荒之力去挣脱生活的枷锁,这是陶渊明式的中国知识分子的雅量。如果你自己是好的男人或女人…...

安卓(android)订餐菜单【Android移动开发基础案例教程(第2版)黑马程序员】

一、实验目的(如果代码有错漏,可查看源码) 1.掌握Activity生命周的每个方法。 2.掌握Activity的创建、配置、启动和关闭。 3.掌握Intent和IntentFilter的使用。 4.掌握Activity之间的跳转方式、任务栈和四种启动模式。 5.掌握在Activity中添加…...

【cocos creator】【模拟经营】餐厅经营demo

下载:【cocos creator】模拟经营餐厅经营...

前端 | 深入理解Promise

1. 引言 JavaScript 是一种单线程语言,这意味着它一次仅能执行一个任务。为了处理异步操作,JavaScript 提供了回调函数,但是随着项目处理并发任务的增加,回调地狱 (Callback Hell) 使异步代码很难维护。为此,ES6带来了…...

Visual Studio Code修改terminal字体

个人博客地址:Visual Studio Code修改terminal字体 | 一张假钞的真实世界 默认打开中断后字体显示如下: 打开设置,搜索配置项terminal.integrated.fontFamily,修改配置为monospace。修改后效果如下:...

自然语言处理-词嵌入 (Word Embeddings)

人工智能例子汇总:AI常见的算法和例子-CSDN博客 词嵌入(Word Embedding)是一种将单词或短语映射到高维向量空间的技术,使其能够以数学方式表示单词之间的关系。词嵌入能够捕捉语义信息,使得相似的词在向量空间中具有…...

自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数

import numpy as np import torch import torch.nn as nn import torch.optim as optim from sklearn.metrics import precision_score, recall_score, f1_score# 数据准备 class1_points np.array([[1.9, 1.2],[1.5, 2.1],[1.9, 0.5],[1.5, 0.9],[0.9, 1.2],[1.1, 1.7],[1.4,…...

【论文笔记】Fast3R:前向并行muti-view重建方法

众所周知,DUSt3R只适合做稀疏视角重建,与sapnn3r的目的类似,这篇文章以并行的方法,扩展了DUSt3R在多视图重建中的能力。 abstract 多视角三维重建仍然是计算机视觉领域的核心挑战,尤其是在需要跨不同视角实现精确且可…...

谈谈你所了解的AR技术吧!

深入探讨 AR 技术的原理与应用 在科技飞速发展的今天,AR(增强现实)技术已经悄然改变了我们与周围世界互动的方式。你是否曾想象过如何能够通过手机屏幕与虚拟物体进行实时互动?在这篇文章中,我们将深入探讨AR技术的原…...

upload labs靶场

upload labs靶场 注意:本人关卡后面似乎相比正常的关卡少了一关,所以每次关卡名字都是1才可以和正常关卡在同一关 一.个人信息 个人名称:张嘉玮 二.解题情况 三.解题过程 题目:up load labs靶场 pass 1前后端 思路及解题:…...

搜索引擎友好:设计快速收录的网站架构

本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/14.html 为了设计一个搜索引擎友好的网站架构,以实现快速收录,可以从以下几个方面入手: 一、清晰的目录结构与层级 合理划分内容:目录结构应…...

基于 oneM2M 标准的空气质量监测系统的互操作性

论文标题 英文标题: Interoperability of Air Quality Monitoring Systems through the oneM2M Standard 中文标题: 基于 oneM2M 标准的空气质量监测系统的互操作性 作者信息 Jonnar Danielle Diosana, Gabriel Angelo Limlingan, Danielle Bryan Sor…...

春晚舞台上的人形机器人:科技与文化的奇妙融合

文章目录 人形机器人Unitree H1的“硬核”实力传统文化与现代科技的创新融合网友热议与文化共鸣未来展望:科技与文化的更多可能结语 2025 年央视春晚的舞台,无疑是全球华人目光聚焦的焦点。就在这个盛大的舞台上,一场名为《秧BOT》的创意融合…...

零基础学习书生.浦语大模型-入门岛

第一关:Linux基础知识 Cursor连接服务器 使用Remote - SSH插件即可 注:46561:服务器端口号 运行指令 python hello_world.py端口映射 ssh -p 46561 rootssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyCheckingno …...

Gurobi基础语法之 addConstr, addConstrs, addQConstr, addMQConstr

在新版本的 Gurobi 中,向 addConstr 这个方法中传入一个 TempConstr 对象,在模型中就会根据这个对象生成一个约束。更重要的是:TempConstr 对象可以传给所有addConstr系列方法,所以下面先介绍 TempConstr 对象 TempConstr TempC…...

数据结构---图的遍历

图的遍历(Travering Graph):从图的某一顶点出发,访遍图中的其余顶点,且每个顶点仅被访问一次,图的遍历算法是各种图的操作的基础。 复杂性:图的任意顶点可能和其余的顶点相邻接,可能在访问了某个顶点后,沿某条路径搜索…...

Qwen 模型自动构建知识图谱,生成病例 + 评价指标优化策略

关于数据库和检索方式的选择 AI Medical Consultant for Visual Question Answering (VQA) 系统:更适合在前端使用向量数据库(如FAISS)结合关系型数据库来实现图像和文本的检索与存储。因为在 VQA 场景中,你需要对患者上传的图像或…...

.Net Web API 访问权限限定

看到一个代码是这样的: c# webapi 上 [Route("api/admin/file-service"), AuthorizeAdmin] AuthorizeAdmin 的定义是这样的 public class AuthorizeAdminAttribute : AuthorizeAttribute {public AuthorizeAdminAttribute(){Roles "admin"…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...