matlab仿真 OFDM系统仿真

news2024/9/17 7:12:42

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真   刘学勇编著第九章内容,有兴趣的读者请阅读原书) 

clear all
N=8;%子载波数
f=1:N;%各个子载波频率
x=randi([0 3],1,N);%子载波上的数据
x1=qammod(x,4);%4-QAM调制
t=0:0.001:1-0.001;%符号持续时间
w=2*pi*f.'*t;
w1=2*pi*(f+0.2).'*t;%频偏为0.2Hz时的子载波角频率
y=x1*exp(j*w);%子载波调制
plot(t,abs(y))%画出调制后的波形包络
for ii=1:N
    y1(ii)=sum(y.*exp(-j*w(ii,:)))/length(t);%无频偏解调第ii个子载波上的数据
end

stem(abs(x1))%显示无频偏时子载波解调后的结果
hold on
stem(abs(y1),'r<')
title('频偏为0时的子载波解调结果')
axis([0 9 0 3])
legend('原始数据','子载波解调后的数据')
for ii=1:N
    y3(ii)=sum(y.*exp(-j*(w1(ii,:))))/length(t);
end
figure
stem(abs(x1))
hold on
stem(abs(y3),'r<')
axis([0 9 0 3])
title('频偏为0.2Hz时的子载波解调结果')
legend('原始数据','子载波解调后的结果')

思路如下:

产生原始数据-4QAM调制-子载波调制-子载波解调(将载波通过乘法的方式进行消除)-画图

这里比较调制和解调的数据都是QAM调制之后的数据,代码并没有对QAM进行解调,而且在比较数据的时候比较的是QAM数据的幅值(abs)

clear all
N=8;%子载波数
x=randi([0 3],1,N)%子载波上的数据
x1=qammod(x,4)%4-QAM调制
f=1:N;%子载波频率
t=0:0.001:1-0.001;%符号持续时间
w=2*pi*f.'*t;
w1=2*pi*(f+0.2).'*t;
y1=x1*exp(j*w);%子载波调制

x2=ifft(x1,N);%IFFT
plot(t,abs(y1));
hold on;

stem(0:1/8:1-1/8,abs(x2)*N,'-r');
legend('模拟调制实现','IDFT实现')
title('OFDM的模拟调制实现与IDFT实现')

x3=fft(x2)%FFT

代码中有两种调制方式,一种是乘上载波调制,除以载波解调(模拟调制)

另一种是用ifft调制,fft解调

 总结:码元相互干扰,符号之间需要间隔,插入空白间隔会造成多径干扰,所以需要插入循环前缀,降低误码率,但是传输了一些无用信息,牺牲了功率和信息速率

clear all
N=64;%系统子载波数
x=randi([0 15],N,2);%2个符号周期的数据
x1=qammod(x,16);%16QAM调制
x2=ifft(x1);%ifft
x3=[zeros(16,2);x2];%空白前缀
x4=[x2(49:end,:);x2];%循环前缀(1)

x3=reshape(x3,1,160);%并串转换
x4=reshape(x4,1,160);

h=sqrt(1/3)*(randn(1,3));%3径信道(2)

y1=x3*h(1)+[zeros(1,8) x3(1:end-8)*h(2)];%只考虑前2径(3)
y2=x4*h(1)+[zeros(1,8) x4(1:end-8)*h(2)];

y3=reshape(y1,80,2);%串并转换
y4=reshape(y2,80,2);

y3=y3(17:end,2);%考虑第2个符号的影响(4)
y4=y4(17:end,2);

y3=fft(y3);%fft
y4=fft(y4);

h1=[h(1) zeros(1,7) h(2)];%信道fft变换(6)
H=fft(h1,N).';
y3=y3./H;%信道均衡(5)
y4=y4./H;

figure
stem(abs(x1(:,2)),'fill');hold on;stem(abs(y3),'r<');stem(abs(y4),'-gs')
legend('原始信号','空白前缀','循环前缀')
axis([0 70 0 max(max(abs(y3),abs(y4)))+2])
title('2径信道结果')

y1=y1+[zeros(1,17) x3(1:end-17)*h(3)];%只考虑前2径
y2=y2+[zeros(1,17) x3(1:end-17)*h(3)];

y3=reshape(y1,80,2);%串并转换
y4=reshape(y2,80,2);

y3=y3(17:end,2);%考虑第2个符号的影响
y4=y4(17:end,2);

y3=fft(y3);%fft
y4=fft(y4);

h1=[h1 zeros(1,11) h(3)];%信道fft变换
H=fft(h1,N).';
y3=y3./H;%信道均衡
y4=y4./H;

figure
stem(abs(x1(:,2)),'fill');hold on;stem(abs(y3),'r<');stem(abs(y4),'-gs')
legend('原始信号','空白前缀','循环前缀')
axis([0 70 0 max(max(abs(y3),abs(y4)))+2])
title('3径信道结果')

(1)

(2)

此处的三径信道是三个常数,信道对信息的影响是信道常数直接与信息相乘得到的。

(3)

如题目,第一个信道的时延为0,所以经过信道的过程为x*h(1);

第二个信道的时延为8,所以信号整体往后移动8个单位,前面空出来的部分全为0,后面超出信号长度的部分直接排除(end-8)

(4)

考虑第二个符号的影响

注意图9-8的解释,载波之间的周期只差不再是正数,也就是载波之间的正交性遭到了破坏,所以载波的解调会受到其它载波的影响,这里第二个符号产生的影响简化为1:15位置的数据损失,

(5)(6)

信道均衡是为了消除信道的影响

已知Y=HX,其中X为输入信号,Y为输出信号,H为信号,那么在Y的基础上左乘X的逆矩阵,就可以实现Y=X

为了实现这一目的,我们需要得到信道的FFT变换,因为信道的采样点分别为0,8,而且

所以信道的矩阵形式为

[h(1) 0 0 0 0 0 0 0 h(2)](从0开始到8,所以长度为9)

后面三径的情况就是在二径的基础上再叠加上最后一个采样点即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2116257.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习周报-2024.9.3

目录 摘要 Abstract 文献阅读&#xff1a;一种改善河流水质预测的耦合模型以解决非平稳性和数据限制 一、现有问题 二、提出方法 三、相关知识 1、基于小波分析的LSTM&#xff08;WA-LSTM&#xff09; 2、迁移学习TL改进WA-LSTM 四、WA-LSTM-TL模型 五、研究实验 1、…

手写NACOS的服务的注册与发现|心跳机制|轮询调用服务功能

背景 手写NACOS的服务的部分核心功能&#xff0c;提高自身的编码能力 本篇文章设计的是单体NACOS后端服务&#xff0c;提供SDK给多个NACOS客户端使用 本文编写了注册与发现|心跳机制|轮询调用服务功能&#xff0c;可当做入门级阅读 nacos-service 项目结构 代码内容 pom配置…

Detect It Easy

Detect It Easy&#xff08;简称 DIE&#xff09;项目的网址为 https://github.com/horsicq/Detect-It-Easy 下载完安装包后&#xff0c;直接双击die.exe即可进入到操作界面 工具介绍&#xff1a; 它可以用来检测程序架构和文件类型。如图所示。其中&#xff0c;「模式」说明程…

UE5 贝塞尔曲线导弹

首先创建导弹Actor蓝图 代码逻辑&#xff0c;这其中创建的所有变量都不用添加值&#xff0c;这些逻辑要画图来解释&#xff0c;比较麻烦&#xff0c;大家自行理解一下 接下来进入人物蓝图编写代码逻辑&#xff0c;我这里是在两个不同的位置发射两枚导弹 宏中的代码&#xff0c;…

时序预测|基于粒子群优化支持向量机的时间序列预测Matlab程序PSO-SVM 单变量和多变量 含基础模型

时序预测|基于粒子群优化支持向量机的时间序列预测Matlab程序PSO-SVM 单变量和多变量 含基础模型 文章目录 一、基本原理1. 问题定义2. 数据准备3. SVM 模型构建4. 粒子群优化&#xff08;PSO&#xff09;5. 优化与模型训练6. 模型评估与预测7. 流程总结8. MATLAB 实现概述 二、…

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点&#xff1a; 鼠标左键双击&#xff0c;设定红色的起点。左键双击设定起点&#xff0c;用红色标记。 设定终点&#xff1a; 鼠标右键双击&#xf…

轻松上手,高效产出:音频剪辑工具年度精选

不知道你有没有拍vlog记录生活的习惯&#xff0c;有时候视频里穿插进自己的声音能让视频更加丰富贴上自己的标签。这次我们一起探讨当下有哪些好用的在线音频剪辑工具。 1.FOXIT音频剪辑 链接直达>>https://www.foxitsoftware.cn/audio-clip/ 这个工具是一款专业的音…

GNU的伪操作 (25)

这里主要是 对 GNU的 各个伪操作进行 详细的解释。 先来看着几个 伪操作。 .byte, .short, .long, .quad , .float , 这个是关于 字节的。 .string .ascii 是关于字符串的。 这个字符串编译器是可以自动在末尾补0 的。 举例&#xff1a; val: .word 0x11223344 mov r…

计算机组成原理(SRAM电路图示)

1.该电路由6个MOS管&#xff08;T1-T6&#xff09;组成 2.T1-T4是一个由MOS管组成的触发器基本电路&#xff1b; T5&#xff0c;T6像开关&#xff0c;受行地址选择信号控制&#xff1b; T7,T8受列地址选择控制&#xff0c;分别与位线A&#xff0c;和相连 3.假设触发器…

FinOps原则:云计算成本管理的关键

导语&#xff1a; FinOps 原则为我们提供了北极星&#xff08;North Star&#xff09;&#xff0c;在我们实践云财务管理时指导我们的活动。这些原则由 FinOps 基金会成员制定&#xff0c;并通过经验磨练出来。 北极星&#xff08;North Star&#xff09;的含义&#xff1a; …

不用管理员权限直接修改windows中hosts值的方法

本文只适用于少数经常修改hosts文件的程序员帅哥和美女们。 背景&#xff1a;直接修改hosts文件的不足 修改C:\Windows\System32\drivers\etc\hosts时&#xff0c;必须要管理员权限。 经常修改&#xff0c;会觉得有一丝丝麻烦。 方法1 &#xff08;安全性低&#xff0c;不…

ThinkPHP5 5-rce远程代码执行漏洞复现

启动容器 docker-compose up -d 查看端口 docker ps 端口为:8080,访问网站&#xff0c;搭建成功 漏洞复现 &#xff08;1&#xff09;输出关于 PHP 配置的信息 &#xff08;2&#xff09;将php代码写入文件 接着访问shell.php 由于存在过滤&#xff0c;需要用到base64加密来使…

SPIRNGBOOT+VUE实现浏览器播放音频流并合成音频

一、语音合成支持流式返回&#xff0c;通过WS可以实时拿到音频流&#xff0c;那么我们如何在VUE项目中实现合成功能呢。语音合成应用非常广泛&#xff0c;如商家广告合成、驾校声音合成、新闻播报、在线听书等等场景都会用到语音合成。 二、VUE下实现合成并使用浏览器播放代码…

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一&#xff1a;循环解法二&#xff1a;递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出…

软件质量保障:故障演练介绍

目录 背景&#xff1a;架构变化带来的问题 什么是故障演练 为什么需要故障演练 故障演练场景有哪些 不同演练类型和目标 如何对工具进行评估 功能评测项 告警评测项 观测指标评测项 总结 背景&#xff1a;架构变化带来的问题 随着架构越来越复杂、应用越来越多样&…

外卖霸王餐对接接口为用户提供了哪些好处?

外卖霸王餐对接接口为用户提供了多种好处&#xff0c;以下是一些主要优势&#xff1a; 免费或低成本的美食体验&#xff1a;用户可以通过霸王餐活动免费或以非常低的价格尝试不同的餐厅和菜品。发现新餐厅和菜品&#xff1a;霸王餐活动可以帮助用户发现新的餐厅和他们可能感兴趣…

【C/C++IO流汇总】C/C++IO流以及系统调用open/read/write等详解

IO流学习分享 1、C中文件IO使用1.1、文件函数1.2、文件的使用方式1.3、文件的读写函数1.4、示例1.4.1、fgetc()函数1.4.2、getc()函数1.4.3、fputc()函数1.4.4、putc()函数1.4.5、fgets()函数1.4.6、fputs()函数1.4.7、fscanf()函数1.4.8、fprintf()函数 1.5、fread()函数1.5.1…

stm32之SPI通信协议

文章目录 前言一、SPI通信协议1.1 SPI简介1.2 SPI通信特点1.3 SPI与I2C对比 二、SPI硬件电路三、SPI通信原理四、SPI时序单元4.1 起始和终止条件4.2 交换一个字节(模式1)4.3 交换一个字节(模式0)4.4 交换一个字节(模式2和3) 五、SPI时序5.1 发送指令5.2 指定地址写5.3 指定地址…

软件部署-Docker容器化技术

开始前的环境说明 VMware 17 Pro Centos release 7.9.2009(防火墙已关闭) Docker 26.1.4 Docker镜像加速器配置:"https://do.nark.eu.org", "https://dc.j8.work", "https://docker.m.daocloud.io", "https://dockerproxy.com", &…

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案&#xff0c;还是尝试组织和编辑主文档&#xff0c;PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时&#xff0c;请考虑这些因素。 1. 确定您的…