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

生成OFDM信号时,先得把数据映射到子载波上。128个子载波里实际用120个(掐头去尾防频谱泄露),用16QAM调制的话代码大概长这样

OFDM基于块状导频的信道估计算法仿真 本次仿真载频为2GHz带宽1MHz子载波数128个cp为16 子载波间隔为7.8125kHz 一个ofdm符号长度为128uscp长度为16us 采用16QAM调制方式 最大doppler频率为132Hz 多径信道为5径 导频符号间隔为10import numpy as np bits np.random.randint(0,2,120*4) # 每个符号4bit symbols np.reshape(bits, (120,4)).dot([8,4,2,1]) # 转十进制 qam_table np.array([-3-3j, -3-1j, -33j, -31j, -1-3j, -1-1j, -13j, -11j, 3-3j, 3-1j, 33j, 31j, 1-3j, 1-1j, 13j, 11j])/np.sqrt(10) tx_data qam_table[symbols]这里有个细节16QAM的归一化系数1/√10是为了保证符号能量为1。不过实际仿真时有些人会偷懒不归一化结果就是Eb/N0得重新换算。导频插入采用块状结构每隔10个子载波插一个。导频位置用PN序列更抗干扰但这次直接用BPSKpilot_pos np.arange(0, 128, 10) pilot_value np.random.choice([1,-1], len(pilot_pos)) ofdm_symbol np.zeros(128, dtypecomplex) ofdm_symbol[pilot_pos] pilot_value ofdm_symbol[1:-1] tx_data # 避开直流和最高频注意索引1到-2的位置用来放数据避免直流分量和最高频子载波。这时候如果直接做IFFT会得到时域信号但别忘加循环前缀time_signal np.fft.ifft(ofdm_symbol) cp time_signal[-16:] # 取最后16个样点作为CP tx_frame np.concatenate([cp, time_signal])CP长度16对应16us的保护间隔对于最大时延扩展来说够不够得看信道模型。这次用的是5径瑞利信道最大时延设定在CP范围内就行。重点来了信道估计部分。接收端拿到信号后先去掉CP做FFTrx_symbol np.fft.fft(rx_time_signal)接着在导频位置做LS估计H_pilot rx_symbol[pilot_pos] / pilot_value这时候得到的是离散点上的信道响应需要插值出所有子载波的信道。线性插值虽然糙但速度快H_est np.interp(np.arange(128), pilot_pos, H_pilot)不过当多普勒频移达到132Hz时相当于时速142km/h的移动速度信道在时域上变化剧烈可能需要更复杂的二维插值。但这次仿真假设信道在一个OFDM符号内基本不变。OFDM基于块状导频的信道估计算法仿真 本次仿真载频为2GHz带宽1MHz子载波数128个cp为16 子载波间隔为7.8125kHz 一个ofdm符号长度为128uscp长度为16us 采用16QAM调制方式 最大doppler频率为132Hz 多径信道为5径 导频符号间隔为10为了验证效果拿估计出的信道做均衡eq_data rx_symbol[1:-1] / H_est[1:-1]这时候看星座图可能会发现相位旋转因为多普勒还带来了载波频偏。不过仿真里没加频偏估计模块所以得另外处理。整个流程跑下来误码率曲线在SNR20dB时大概能到1e-3量级。但实际中要考虑导频开销——这次每10个子载波插一个导频相当于12.8%的开销属于典型值。如果想提升性能可以加密导频间隔但代价是有效数据速率下降。有个坑要注意多径信道的时延抽头必须对齐采样间隔。比如采样率1MHz对应1us的采样间隔假设多径时延是[0, 2, 4, 7, 11]us那么信道建模应该是channel_taps np.random.randn(5) 1j*np.random.randn(5) channel_taps / np.linalg.norm(channel_taps) # 归一化功率 delay_samples [0, 2, 4, 7, 11] # 对应时延这样才能正确模拟时域卷积。不过实际仿真时为了省事可能直接用现成的rayleighchan函数生成。

相关文章:

生成OFDM信号时,先得把数据映射到子载波上。128个子载波里实际用120个(掐头去尾防频谱泄露),用16QAM调制的话代码大概长这样

OFDM基于块状导频的信道估计算法仿真 本次仿真载频为2GHz,带宽1MHz,子载波数128个,cp为16 子载波间隔为7.8125kHz 一个ofdm符号长度为128us,cp长度为16us 采用16QAM调制方式 最大doppler频率为132Hz 多径信道为5径 导频符号间…...

现代控制理论报告:线性系统理论及MATLAB仿真下的状态观测器与状态反馈控制设计与仿真详解报告...

现代控制理论报告,线性系统理论,MATLAB仿真,状态观测器与状态反馈控制的设计与仿真。 代码详细报告simulink仿真最近在搞现代控制理论的项目,发现状态观测器和状态反馈这俩兄弟真是形影不离。手头有个倒立摆的案例,系统…...

高效稳定的六轴机械手程序:信捷XD5和威纶触摸屏编写,成熟可靠且具有借鉴价值高,附带详尽注释

六轴机械手程序 用信捷XD5和威纶触摸屏编写。此程序已经实际设备上批量应用,程序成熟可靠,借鉴价值高,程序有注释。最近在车间摸鱼的时候翻到一个挺有意思的六轴机械手项目,用的是信捷XD5 PLC配威纶TK8071iQ触摸屏。这玩意儿已经…...

Armbian系统下1Panel面板端口被UFW拦截?三步搞定访问问题

Armbian系统下1Panel面板端口被UFW拦截的终极解决方案 问题背景与核心痛点 当你兴奋地在Armbian系统上部署了1Panel面板,准备大展身手时,突然发现面板无法访问——这种场景对于刚接触Armbian的新手来说简直是噩梦。问题的根源往往在于UFW防火墙的默认配置…...

MySQL UDF提权实战:从编译到提权的完整避坑指南(附靶机复现)

MySQL UDF提权实战:从编译到提权的完整避坑指南(附靶机复现) 在数据库安全领域,UDF(用户自定义函数)提权是一种经典的技术手段。本文将带你从零开始,完整复现这一过程,同时深入剖析其…...

从根目录到子目录:图解FatFs文件系统f_mkdir如何分配Cluster和更新目录项

从根目录到子目录:图解FatFs文件系统f_mkdir如何分配Cluster和更新目录项 在嵌入式系统中,文件系统的可靠性和效率直接影响着设备的整体性能。FatFs作为一款轻量级、兼容性强的文件系统模块,被广泛应用于各类嵌入式存储设备中。今天&#xff…...

FFmpeg隐藏技巧:用-acodec和af参数把手机录音变成录音棚效果(2024新版)

FFmpeg音频魔法:手机录音秒变专业级作品的终极指南 你是否曾经用手机录制过重要会议、灵感迸发的瞬间或是珍贵的家庭时刻,回放时却被背景噪音、音量不均或单薄音质破坏了体验?别急着投资昂贵的录音设备——你口袋里的智能手机加上FFmpeg这个开…...

从离线播报到智能交互:九联物联UMA223-H鸿蒙模组如何重塑东南亚支付云喇叭生态

1. 离线播报到智能交互的技术跃迁 记得去年在曼谷夜市买芒果糯米饭时,摊主那台会讲中文的收款喇叭让我印象深刻。这种看似简单的语音播报背后,藏着九联物联UMA223-H鸿蒙模组的硬核技术。传统收款设备就像老式收音机,必须联网才能"说话&q…...

拖延症福音:全场景通用AI论文工具,千笔AI VS 锐智 AI

还在为选题→大纲→初稿→文献→降重→查重→格式→答辩PPT的全流程焦头烂额?千笔AI以八大核心功能实现全流程一站式覆盖,从选题到答辩PPT生成全程护航,让论文写作从“耗时耗力”变成“高效规范”,真正实现“选题快、框架稳、修改…...

Dify异步节点稳定性攻坚实录(生产环境零宕机的5大硬核配置)

第一章:Dify异步节点稳定性攻坚实录(生产环境零宕机的5大硬核配置)在高并发、长生命周期任务密集的生产环境中,Dify 的异步节点(如 LLM 调用、RAG 检索、工作流编排)曾频繁出现超时中断、Celery worker 意外…...

新手也能上手!全领域适配的AI论文写作软件 —— 千笔写作工具

你是否也曾为论文写作而焦虑?选题无头绪、框架混乱、文献查找困难、查重率高、格式错误频出……这些痛点是否让你倍感压力?面对繁重的学术任务,很多同学都感到力不从心。现在,一款专为学生打造的AI论文写作工具——千笔AI&#xf…...

Dify私有化不是“装完就跑”!从CI/CD流水线嵌入、模型热加载监控到灰度发布控制台,构建企业级AI应用交付闭环(含Prometheus+Grafana全量看板模板)

第一章:Dify私有化不是“装完就跑”!从CI/CD流水线嵌入、模型热加载监控到灰度发布控制台,构建企业级AI应用交付闭环(含PrometheusGrafana全量看板模板)Dify私有化部署绝非单次安装即可高枕无忧的静态交付——它必须深…...

7-Zip深度应用指南:从压缩原理到企业级解决方案

7-Zip深度应用指南:从压缩原理到企业级解决方案 【免费下载链接】7z 7-Zip Official Chinese Simplified Repository (Homepage and 7z Extra package) 项目地址: https://gitcode.com/gh_mirrors/7z1/7z 认知篇:你真的了解压缩软件吗&#xff1f…...

西门子 Smart200 搭建恒温恒湿空调箱控制系统

恒温恒湿空调箱程序,plc恒温恒湿,用西门子smart200 mcgs(昆仑通态)西门子触摸屏。 恒湿空调 案例 有两个版本的 一个昆仑通态MCE程序 一个西门子触摸屏smart700iev3程序 含 200smart PLC程序在自动化控制领域,恒温恒湿空调箱的精…...

ESP32蜂鸣器播放音乐音质太差?试试这3个调优技巧和选曲避坑指南

ESP32蜂鸣器音乐调优实战:从物理限制到听觉优化的3个关键策略 当你在创客项目中为ESP32接上无源蜂鸣器,满心期待地播放第一首歌曲时,那种单薄刺耳的音效往往让人大失所望。这不是代码写错了,而是物理器件与音乐特性之间需要一场精…...

Matlab/Simulink 半车主动悬架建模:ADRC 与 PID 的碰撞

matlab/simulink半车主动悬架建模:基于ADRC(自抗扰控制)的主动悬架控制。 主体模型为半车主动悬架,采取ADRC控制。 输出为车身加速度,悬架动挠度,轮胎动变形。 默认输入为正弦路面输入。 有与pid控制的效果对比。在汽车悬架系统的…...

单轮车辆 ABS 防抱死控制 Simulink 仿真模型探索

单轮车辆ABS防抱死控制Simulink仿真模型 1.可控制切换冰雪路面和开关ABS系统控制 2.仿真输出时域下的车速/轮速/制动距离/滑移率/控制信号曲线,可以配置车重/滑移率-摩擦系数曲线/主缸压力/制动效能因数等参数。 3.有基础说明文档在汽车安全领域,ABS&am…...

针对‘全球化域名’策略的 AI 审计:如何利用 AI 自动分配不同语种的抓取权重?

各位来宾,各位技术同仁,大家好! 非常荣幸今天能站在这里,与大家共同探讨一个在当前全球化数字浪潮中极具前瞻性和实践意义的话题:针对‘全球化域名’策略的AI审计,以及如何利用人工智能自动分配不同语种的抓…...

3D-MIMO信道模型的理论简介与MATLAB仿真分析

3D-MIMO(三维多输入多输出)是传统2D-MIMO的扩展,区别在于将天线阵列的维度从水平面拓展到垂直面,同时考虑电磁波在方位角(Azimuth Angle)和俯仰角(Elevation Angle)两个维度的传播特性。相比2D-MIMO,3D-MIMO能够利用垂直维度的波束赋形实现用…...

深度学习yolo26算法的智慧工地数据集 工地人员安全合规检测、施工区域风险识别、智能安防巡检、作业规范自动核查10599期

工地安全实例分割数据集文档(!!!大量背景未标注)数据集核心信息表项目内容类别数量15类中文类别头盔、车辆、夹克、人、电梯、机器、主门、测绘区、无头盔、无夹克、禁止穿鞋、鞋子、塔式起重机、未设置围栏区域、白线图像数量3300数据集格式…...

17 openclaw数据库连接池配置:避免性能瓶颈的关键

openclaw数据库连接池配置:避免性能瓶颈的关键背景/痛点在高并发场景下,数据库连接管理往往是系统性能的关键瓶颈。许多开发者在实际项目中会遇到这样的问题:当并发请求数量增加时,数据库连接频繁创建和销毁导致系统响应急剧下降&…...

16 openclaw与数据库集成:ORM使用与性能优化

openclaw与数据库集成:ORM使用与性能优化背景与痛点在openclaw的实际业务场景中,数据库操作是绕不开的核心环节。随着业务复杂度的提升,直接使用原生SQL不仅开发效率低下,还容易引发注入漏洞和类型转换问题。ORM(对象关…...

手把手教你用Makefile一键搞定NCVerilog与FineSim混合仿真(附完整脚本)

从零构建NCVerilog与FineSim混合仿真的自动化工程体系 在IC验证领域,混合信号仿真是验证数模混合芯片功能完整性的关键环节。传统手动执行NCVerilog和FineSim命令的方式不仅效率低下,还容易因环境配置差异导致结果不一致。本文将系统介绍如何通过Makefil…...

从波形图到实战:手把手教你用示波器调试RS485通信故障

从波形图到实战:手把手教你用示波器调试RS485通信故障 在工业自动化和物联网系统中,RS485通信因其抗干扰能力强、传输距离远等优势被广泛应用。然而,当通信出现故障时,如何快速定位问题并解决,成为许多工程师面临的挑战…...

界面开发(5)--- PyQt5实现媒体播放器的核心功能与界面美化

1. 从基础播放器到完整媒体中心 上次我们实现了最基本的图像查看和视频播放功能,现在该给它来次全面升级了。想象一下Windows Media Player或VLC那样的完整播放器该有哪些功能?进度条拖动、音量控制、播放列表这些刚需一个都不能少。 先来看看最终效果图…...

线程池(原理 + 应用)

一、什么是线程池线程池(Thread Pool)本质上就是:👉 提前创建好一批线程,重复使用,避免频繁创建和销毁线程的开销简单理解:不用线程池:来一个任务 → 创建线程 → 执行 → 销毁 ❌&a…...

DIY红外遥控接收器:从HS0038引脚到完整电路搭建(附BOM清单)

DIY红外遥控接收器:从HS0038引脚到完整电路搭建(附BOM清单) 在智能家居和电子控制领域,红外遥控技术以其简单可靠、成本低廉的特点,依然是许多DIY项目的首选方案。不同于市面上现成的红外接收模块,从零开始…...

Mac环境下用pycocoevalcap评测ImageCaption模型的完整避坑指南(含Java 8配置)

Mac环境下用pycocoevalcap评测ImageCaption模型的完整避坑指南(含Java 8配置) 在计算机视觉领域,图像描述生成(Image Captioning)是一个重要且富有挑战性的任务。随着多模态大语言模型(MLLM)的兴…...

从倒立摆到无人机:LQR控制器的5个工业级应用案例详解

从倒立摆到无人机:LQR控制器的5个工业级应用案例详解 在控制工程领域,线性二次型调节器(LQR)以其数学优雅性和工程实用性著称。这种基于状态空间的最优控制方法,通过精心设计的代价函数,能够在系统响应速度…...

PyTorch内存优化实战:如何用element_size()和nelement()精准计算张量内存占用

PyTorch内存优化实战:如何用element_size()和nelement()精准计算张量内存占用 在深度学习模型训练和推理过程中,内存管理是一个经常被忽视但极其关键的性能瓶颈。许多开发者习惯性地依赖GPU显存监控工具,却忽略了在代码层面精确计算和优化张量…...