一、实验目的

尝试自行调研、推导,建模实现一个完整的OFDM数字通信系统,要求:

给出数字信号从发射端处理(产生+IDFT)、到信道传输(假定多径信道模型参数已知+线性卷积输入输出关系)、再到接收处理(DFT+去除信道衰减影响)的完整数学推导

使用MATLAB编程,仿真验证上述数学模型

无须考虑信源编解码、信道编解码、基带调制、载波调制

随机生成发送原始符号序列,多径信道引入加性高斯白噪声序列

经过接收处理,能够恢复原始发送符号序列

尝试计算误码率,即画出随信噪比变化的误码率曲线(用半对数坐标)

二、实验原理

OFDM的模拟电路形式

下面为数字信号的数学推导过程

对于模拟信号
f = S 0 S 1 S 2 . . . S N − 1 f = S_0S_1S_2...S_{N-1} f=S0​S1​S2​...SN−1​
经过多载波调制后,每一段信号的以频率为k的正弦波调制结果为
s k ( t ) = S k c o s ( 2 π k t ) = S k e j 2 π k t s_k(t)=S_kcos(2\pi kt)=S_ke^{j2\pi kt} sk​(t)=Sk​cos(2πkt)=Sk​ej2πkt
该信号被分为N段,用N个频率进行调制再叠加,得到的调制信号为
s ( t ) = ∑ k = 0 N − 1 S k e j 2 π k t s(t)=\sum_{k=0}^{N-1}S_ke^{j2\pi kt} s(t)=k=0∑N−1​Sk​ej2πkt
通过采样数字化后,调制后的信号为
s ( n ) = ∑ k = 0 N − 1 S k e j 2 π k n / N s(n)=\sum_{k=0}^{N-1}S_ke^{j2\pi kn/N} s(n)=k=0∑N−1​Sk​ej2πkn/N
发现多载波调制其实与离散傅里叶逆变换(IDFT)的形式相同,可以用MATLAB内置的N点IFFT进行快速计算。

对于接收端来说,利用三角函数的正交性,用不同频率的正弦波可以恢复出对应频率所载的信号,得到
S k = ∫ s ( t ) s i n ( 2 π k t ) d t = ∫ s ( t ) e − j 2 π k t d t S_k =\int s(t)sin(2\pi kt) dt=\int s(t)e^{-j2\pi kt}dt Sk​=∫s(t)sin(2πkt)dt=∫s(t)e−j2πktdt
通过采样数字化后
S k = ∑ n = 0 N − 1 s ( n ) e − j 2 π k n / N S_k=\sum_{n=0}^{N-1} s(n)e^{-j2\pi kn/N} Sk​=n=0∑N−1​s(n)e−j2πkn/N
发现与离散傅里叶变换形式(DFT)相同,可以用MATLAB内置的N点FFT进行快速计算。

三、实验结果

在没有增大符号周期时,误信率与信噪比关系如图所示。

图1 串行传输误信率与信噪比的关系

在一段8192 bit随机产生的比特序列中,误码率、误信率与信噪比的关系如图所示

图2 OFDM仿真实验中误码率与信噪比的关系

图3 OFDM仿真实验中误信率与信噪比的关系

四、结果分析

1、当信噪比超过20dB时,该OFDM系统下误信率和误码率为0。

2、误码率和误信率都随着信噪比增高而下降,即SNR越高,传输可靠性越强。

3、 图1与图3对比得知,增大符号周期能有效抑制多径效应。

附录:代码及参考文献

clc, clear
% 设置参数
% 信息容量
num = 8192;
% 每段大小(载波频率个数)
seg = 8;
% 设置最大SNR
SNRmax = 50;% 随机产生信号
info = randi(2,1,num) - 1;
for s = 1:SNRmax% 设置信道参数road = [1, zeros(1,1000), 0.05, zeros(1,1000),-0.1, zeros(1,1000)];info_a = awgn(info, s); % 增加高斯白噪声 第二个参数为信噪比% 用reshape函数进行串行转并行info1 = reshape(info_a, seg, num/seg);info_re = reshape(info, seg, num/seg);res_seg = OFDM(info1, road, seg, num)>0.5; % OFDM为自编函数% 计算误码率for i = 1 : num/segtemp(i) = sum(res_seg(:,i) ~= info_re(:,i));enderrseg(s) = sum(temp~=0)/num*seg;% 计算误比特率res = reshape(res_seg, 1, num); % 并行信号恢复成串行信号errbit(s) = sum(info~=res)/num;
endplot(errseg)
title("误码率与SNR的关系")
plot(errbit);
title("误比特率与SNR的关系")function res = OFDM(info1, real_road, seg, num)for i = 1:num/seginfo_idft(:,i) = ifft(info1(:,i),seg); % IDFT载波调制过程receiver(:, i) = conv(info_idft(:,i),real_road); % 信号通过信道res(:, i) = real(fft(receiver(:, i), seg)); % DFT恢复信号过程end
end

参考文献

https://blog.csdn.net/a493823882/article/details/80058002?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242

OFDM数字通信MATLAB仿真实现相关推荐

  1. OFDM调制matlab仿真详细代码

    MATLAB仿真代码 % ================================================== % 作者: 肆拾伍 % 时间:11/30 2019 % 版本:V3 % ...

  2. ofdm系统matlab仿真论文,基于MATLAB的OFDM仿真(SIMULINK仿真)

    中 文 摘 要 正交频分复用(OFDM)是一种多载波宽带数字调制技术.相比一般的数字通信系统,它具有频带利用率高和抗多径干扰能力强等优点,因而适合于高速率的无线通信系统.正交频分复用 OFDM 是第四 ...

  3. OFDM系统MATLAB仿真

    OFDM完整仿真过程及解释(MATLAB) 问题: OFDM 子载波间隔是怎么确定的? OFDM 子载波间隔是怎么确定的?书上写着,T是符号宽度,子载波的间隔为1/T:加入保护间隔(循环前缀)之后,子 ...

  4. ofdm系统matlab仿真,基于Simulink 的OFDM 系统仿真分析

    在数字传输系统中,数字信号对高频载波进行调制,变为频带信号,通过信道传输,在接收端解调后恢复成数字信号.由于大多数实际信号都是带通型的,所以必须先用数字基带信号对载波进行调制,形成数字调制信号再进行传 ...

  5. ofdm系统matlab仿真论文,OFDM通信系统分析及其Simulink仿真

    一.课题综述及研究意义 当前,随着Internet商用化所带动的视频.音频及数字通信技术的发展,人们对无线通信寄予了更高的希望.无线移动通信作为通信行业的新兴领域正在进行着日新月异的发展,寻求一种大容 ...

  6. matlab实现ofdm调制解调,基于MATLAB的OFDM调制解调仿真

    基于MATLAB的OFDM调制解调仿真 题目:基于 MATLAB的 OFDM调制解调仿真2009年 6 月 13 日目 录摘要 .IIAbstract IV第 1章 正交频分复用的来源 - 1 -1. ...

  7. OFDM同步技术基于MATLAB仿真,基于Matlab的OFDM系统仿真

    中文摘要 交频分复用(OFDM, Orthogonal Frequency Division Multiplexing) 是一种特殊的多载波方案,它可以被看作一种调制技术,也可以被当作是一种复用技术。 ...

  8. matlab仿真ofdm的ccdf,OFDM系统峰均比降低算法的研究+Matlab仿真(6)

    OFDM系统峰均比降低算法的研究+Matlab仿真(6) 时间:2016-11-28 22:19来源:毕业论文 2.2.5 自适应技术 自适应调制技术在OFDM系统中也占有非常重要的地位,其调制思想是 ...

  9. OFDM通信系统PAPR抑制算法matlab仿真,对比SLM算法和PTS算法

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 OFDM(Orthogonal Frequency Division Multiplexing)正交频分复用技术,OFDM是一 ...

最新文章

  1. C++构造函数(一)
  2. cstring 比较_属牛人和属蛇人姻缘婚配关系比较和谐
  3. numpy中的矩阵与数学上的矩阵的关系
  4. 边工作边刷题:70天一遍leetcode: day 94-1
  5. 动网论坛Ver 7.1.0 Sp1
  6. 制作已编译的html帮助文件
  7. 你得学会并且学得会的Socket编程基础知识(转)
  8. Django学习目录
  9. Android UI 备忘:DrawerLayout
  10. html合并标记,在合并期间在HTML标记之间拉取特定的(文本)间隔
  11. jQuery学习-显示与隐藏
  12. JAVA(二)异常/包及访问权限/多线程/泛型
  13. 【servlet】搭建servlet环境
  14. Ubuntu修改open files数
  15. 图解设计模式 - Adapter 模式
  16. 二维码生成器网站/解码网站
  17. 基于51单片机的体脂检测系统设计(51+oled+hx711+us100)
  18. CSTC-2017-Web-writeup
  19. JavaWeb购物平台小项目
  20. Altium Designer(八):邮票孔拼版

热门文章

  1. evaluate函数在python_Python test.evaluate方法代碼示例
  2. dns欺骗编辑html,charles DNS欺骗
  3. 健康饮食:如何挑选食用油
  4. .net 基础面试题
  5. 什么位置适合开水果店,水果店在什么位置比较好
  6. 计算机组成原理——计算机系统层次结构
  7. 链接orientdb的图形数据库_OrientDB数据库(ruby语言操作)
  8. CSS-reset.css重置样式表
  9. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not?
  10. CentOS 7镜像下载 以及 DVD ISO 和 Minimal ISO 等各版本的区别介绍