基于MATLAB的OFDM的仿真
- 格式:doc
- 大小:518.50 KB
- 文档页数:14
基于MATLAB的MIMO-OFDM通信系统的仿真0 引言5G技术的逐步普及,使得我们对海量数据的存储交换,以及数据传输速率、质量提出了更高的要求。
信号的准确传播显得越发重要,随之而来的是对信道模型稳定性、抗噪声性能以及低误码率的要求。
本次研究通过构建结合空间分集和空间复用技术的MIMO信道,引入OFDM 技术搭建MIMO-OFDM 系统,在添加保护间隔的基础上探究其在降低误码率以及稳定性等方面的优异性能。
1 概述正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM)技术通过将信道分成数个互相正交的子信道,再将高速传输的数据信号转换成并行的低速子数据流进行传输。
该技术充分利用信道的宽度从而大幅度提升频谱效率达到节省频谱资源的目的。
作为多载波调制技术之一的OFDM 技术目前已经在4G 中得到了广泛的应用,5G 技术作为新一代的无线通信技术,对其提出了更高的信道分布和抗干扰要求。
多输入多输出(Multi Input Multi Output,MIMO)技术通过在发射端口的发射机和接收端口的接收机处设计不同数量的天线在不增加频谱资源的基础上通过并行传输提升信道容量和传输空间。
常见的单天线发射和接收信号传输系统容量小、效率低且若出现任意码间干扰,整条链路都会被舍弃。
为了改善和提高系统性能,有学者提出了天线分集以及大规模集成天线的想法。
IEEE 806 16 系列是以MIMO-OFDM 为核心,其目前在欧洲的数字音频广播,北美洲的高速无线局域网系统等快速通信中得到了广泛应用。
多媒体和数据是现代通信的主要业务,所以快速化、智能化、准确化是市场向我们提出的高要求。
随着第五代移动通信5G 技术的快速发展,MIM-OFDM 技术已经开始得到更广泛的应用。
本次研究的MIMO-OFDM 系统模型是5G的关键技术,所以对其深入分析和学习,对于当下无线接入技术的发展有着重要的意义。
基于MATLAB的OFDM系统仿真及分析OFDM(正交频分复用)是一种广泛应用于无线通信系统中的多载波调制技术。
在OFDM系统中,信号被分为多个独立的子载波,并且每个子载波之间正交。
这种正交的特性使得OFDM系统具有抗频率选择性衰落和多径干扰的能力。
本文将基于MATLAB对OFDM系统进行仿真及分析。
首先,我们需要确定OFDM系统的参数。
假设我们使用256个子载波,其中包括8个导频符号用于信道估计,每个OFDM符号的时域长度为128个采样点。
接下来,我们需要生成调制信号。
假设我们使用16QAM调制方式,每个子载波可以传输4个比特。
在MATLAB中,我们可以使用randi函数生成随机的比特序列,然后将比特序列映射为16QAM符号。
生成的符号序列可以通过IFFT(Inverse Fast Fourier Transform)将其转换为时域信号。
OFDM系统的发射端包括窗函数、导频符号插入、IFFT和并行到串行转换等模块。
窗函数用于增加OFDM符号之间的过渡带,导频符号用于信道估计和符号同步。
通过将符号序列与导频图案插入到OFDM符号序列中,然后进行IFFT变换,再进行并行到串行转换即可得到OFDM信号的时域波形。
接下来,我们需要模拟OFDM信号在信道中传输和接收。
假设信道是Additive White Gaussian Noise(AWGN)信道。
在接收端,OFDM信号的时域波形通过串行到并行转换,然后进行FFT(Fast Fourier Transform)变换得到频域信号。
通过在频域上对导频符号和OFDM信号进行正交插值,可以进行信道估计和等化。
最后将频域信号进行解调,得到接收后的比特序列。
通过比较发送前和接收后的比特序列,我们可以计算比特误码率(BER)来评估OFDM系统的性能。
比特误码率是接收到错误比特的比特数与总传输比特数之比。
通过改变信噪比(SNR)值,我们可以评估OFDM系统在不同信道条件下的性能。
一、实习目的1、熟悉通信相关方面的知识、学习并掌握OFDM技术的原理2、熟悉MATLAB语言3、设计并实现OFDM通信系统的建模与仿真二、实习要求仿真实现OFDM调制解调,在发射端,经串/并变换和IFFT变换,加上保护间隔(又称“循环前缀”),形成数字信号,通过信道到达接收端,结束端实现反变换,进行误码分析三、实习内容1.实习题目《正交频分复用OFDM系统建模与仿真》2.原理介绍OFDM的基本原理就是把高速的数据流通过串并变换,分配到传输速率相对较低的若干个子信道中进行传输。
由于每个子信道中的符号周期会相对增加,因此可以减轻由无线信道的多径时延扩展所产生的时间弥散性对系统造成的影响。
并且还可以在OFDM符号之间插入保护间隔,令保护间隔大于无线信道的最大时延扩展,这样就可以最大限度地消除由于多径而带来的符号间干扰(ISI)。
而且,一般都采用循环前缀作为保护间隔,从而可以避免由多径带来的子载波间干扰((ICI) 。
3.原理框图图1-1 OFDM 原理框图4.功能说明4.1确定参数需要确定的参数为:子信道,子载波数,FFT长度,每次使用的OFDM符号数,调制度水平,符号速率,比特率,保护间隔长度,信噪比,插入导频数,基本的仿真可以不插入导频,可以为0。
4.2产生数据使用个随机数产生器产生二进制数据,每次产生的数据个数为carrier_count * symbols_per_carrier * bits_per_symbol。
4.3编码交织交织编码可以有效地抗突发干扰。
4.4子载波调制OFDM采用BPSK、QPSK、16QAM、64QAM4种调制方式。
按照星座图,将每个子信道上的数据,映射到星座图点的复数表示,转换为同相Ich和正交分量Qch。
其实这是一种查表的方法,以16QAM星座为例,bits_per_symbol=4,则每个OFDM符号的每个子信道上有4个二进制数{d1,d2,d3,d4},共有16种取值,对应星座图上16个点,每个点的实部记为Qch。
基于Matlab的OFDM系统仿真实验名称:基于matlab的OFDM系统仿真实验原理:图1 基带OFDM系统实验目的:根据给定的参数完成OFDM信号的调制、传输和解调以及信道建模和信道估计。
主要研究噪声和循环前缀的长度对系统误码率的影响。
实验内容:包括发送端、信道和接收端三个模块。
1、发送模块进行的处理包括OFDM 信号的产生、加入循环前缀、插入训练序列和加扰等部分;2、信道模块对发射端产生的信号施加多径、频偏、相偏等影响;3、接收模块进行的处理包括去循环前缀、解调和信道估计等。
实验参数:1、 Ns=5:一个帧结构中OFDM符号的个数;2、para=40:并行传输的子载波个数;3、gl=10:设置保护时隙的长度;4、an:每条多径的幅度增益0-10dB,粒度为0.1;5、tn:时延扩展0-4us,单位为us;6、wn:频偏-100Hz-100Hz,粒度为0.1Hz;7、sita:设置相偏0-2*pi,粒度为pi/100;8、Np:插入的导频数目实验步骤:1、产生二进制信息,这个可以通过matlab中的round(rand(1,para*Ns*4))命令来实现。
产生的是一个长度为para*Ns*4的0-1序列。
由于采用的是16QAM调制,所以每四个码元调制为一个符号,因此总长度要乘以4。
2、映射:采用的是16QAM调制。
这种调制有圆形星座图和方形星座图两种,本次实验采用方形的星座图。
这一过程是通过子函数fangQAM.m来实现的,图二为方形的星座图。
16-QAM星座图-4-3-2-101234图23、串并转换、插入导频:OFDM的原理就是通过串并转换将高速传输的串行数据转换为并行传输的数据,在matlab中,串并转换是通过reshape(x,para,Ns)来实现的,将串行传输的信号x转换为para个并行传输的子数据流,每个数据流中符号的个数为Ns。
为了接收端能够进行信道估计,在发送端要在发送信号中插入导频,导频的分布模式一般分为块状导频和梳状导频两种,本次实验中插入的是块状导频,所谓的块状分布就是指导频在时域周期性的分配给OFDM符号,这种导频分布模式特别适用于慢衰落的无线信道,由于训练符号包含了所有的导频,所以在频域就不需要插值,因此这种导频分布模式对频率选择性衰落相对不敏感。
无线通信原理-基于matlab的ofdm系统设计与仿真基于matlab的ofdm系统设计与仿真摘要OFDM即正交频分复用技术,实际上是多载波调制中的一种。
其主要思想是将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到相互正交且重叠的多个子载波上同时传输。
该技术的应用大幅度提高无线通信系统的信道容量和传输速率,并能有效地抵抗多径衰落、抑制干扰和窄带噪声,如此良好的性能从而引起了通信界的广泛关注。
本文设计了一个基于IFFT/FFT算法与802.11a标准的OFDM系统,并在计算机上进行了仿真和结果分析。
重点在OFDM系统设计与仿真,在这部分详细介绍了系统各个环节所使用的技术对系统性能的影响。
在仿真过程中对OFDM信号使用QPSK 调制,并在AWGN信道下传输,最后解调后得出误码率。
整个过程都是在MATLAB环境下仿真实现,对ODFM系统的仿真结果及性能进行分析,通过仿真得到信噪比与误码率之间的关系,为该系统的具体实现提供了大量有用数据。
- 1 -第一章 ODMF系统基本原理1.1多载波传输系统多载波传输通过把数据流分解为若干个子比特流,这样每个子数据流将具有较低的比特速率。
用这样的低比特率形成的低速率多状态符号去调制相应的子载波,构成了多个低速率符号并行发送的传输系统。
在单载波系统中,一次衰落或者干扰就会导致整个链路失效,但是在多载波系统中,某一时刻只会有少部分的子信道会受到衰落或者干扰的影响。
图1,1中给出了多载波系统的基本结构示意图。
图1-1多载波系统的基本结构多载波传输技术有许多种提法,比如正交频分复用(OFDM)、离散多音调制(DMT)和多载波调制(MCM),这3种方法在一般情况下可视为一样,但是在OFDM中,各子载波必须保持相互正交,而在MCM则不一定。
1.2正交频分复用OFDM就是在FDM的原理的基础上,子载波集采用两两正交的正弦或余弦函sinm,tcosn,t数集。
基于MATLAB的OFDM系统性能分析与仿真研究OFDM(正交频分复用)是一种常用于无线通信系统中的多载波调制技术。
它将一个高速数据流分成多个子载波进行同时传输,提高了频谱利用率,也减小了频域上的干扰。
本文将基于MATLAB对OFDM系统的性能进行分析与仿真研究。
首先,我们需要搭建OFDM系统的仿真模型。
OFDM系统包括信号生成、子载波调制、信道传输、接收、解调和误码分析几个主要环节。
信号生成阶段,我们可以使用伪随机码(PN码)生成器产生信号序列作为待传输的数据。
然后,将信号序列进行并行-串行转换,将其分组成多个子载波。
子载波调制阶段,我们可以选择常用的调制方式,如BPSK、QPSK等。
在MATLAB中,我们可以利用内置的调制函数进行实现。
信道传输阶段,我们可以引入AWGN(加性高斯白噪声)信道模型,模拟无线信道中的噪声干扰。
通过调整信道衰落因子、信噪比等参数,可以模拟不同的信道环境。
接收阶段,我们需要进行并行信号转换成串行信号,并进行解调操作。
对于解调部分,与调制阶段相反,我们可以使用MATLAB中的解调函数,如bpskdemod、qpskdemod等。
误码分析阶段,我们通过计算误码率(BER)来评估系统性能。
可以通过比较原始信号和接收信号之间的差异,统计错误的比特数量来计算误码率。
在进行OFDM系统的性能分析与仿真时,我们可以分析以下几个方面的内容:1.调制方式对系统性能的影响:通过比较不同调制方式(如BPSK、QPSK、16QAM、64QAM等)下的误码率,评估调制方式对系统的影响。
2.子载波数量的选择:通过改变子载波的数量,比较不同子载波数量下的误码率与频谱效率,找到最佳子载波数量。
3.信道传输对系统性能的影响:通过改变信道衰落因子、信噪比等参数,比较不同信道环境下的误码率,评估信道传输对系统性能的影响。
4.信道估计与均衡:在OFDM系统中,由于信道传输的不确定性,需要进行信道估计与均衡。
基于matlab ofdm通信系统仿真代码
基于MATLAB OFDM通信系统仿真代码是一种应用在无线通信领域的高
效的通信技术。
OFDM(正交分频多载波)技术是一种高效的技术,它
能够在有限的信道容量内传输大量的数据,同时也能抵御多径衰减和
多路径效应。
此外,OFDM还可以抵抗非线性干扰和伪噪声,从而提高
系统的可靠性和稳定性。
MATLAB OFDM通信系统仿真代码可以帮助我们快速验证一个OFDM系统的性能,从而帮助我们更好地理解OFDM技术
背后的原理和技术。
MATLAB OFDM通信系统仿真代码由信道模拟、OFDM调制和解调制的子
模块组成,其中每个子模块都可以通过MATLAB编程实现。
首先,我们
需要定义一个简单的信道函数,以模拟实际信道的衰减和多路径效应,然后将信号传输给OFDM调制模块,它将信号转换成OFDM调制的多载
波信号。
接着,多载波信号被发射到信道中,经过信道后,经过OFDM
解调制模块处理,得到恢复后的信号,再经过信道衰减模拟得到最终
信号,完成仿真。
通过使用MATLAB OFDM通信系统仿真代码,我们可以更有效地对OFDM
技术进行仿真评估,同时也可以获得更为准确、直观的仿真结果。
此外,MATLAB OFDM通信系统仿真代码还可以帮助我们了解OFDM技术的
具体实施方法,为实际开发工作提供有效的技术支持。
基于MATLAB的OFDM系统设计与仿真OFDM(正交频分复用)是一种高效的调制技术,广泛应用于无线通信系统中。
本文将基于MATLAB对OFDM系统进行设计与仿真,并介绍其主要步骤和关键技术。
首先,我们需要对OFDM系统进行建模。
OFDM系统由发送端和接收端两部分组成。
发送端主要包括数据源、调制器、IFFT以及保护间隔插入器。
接收端主要包括保护间隔删除器、FFT、解调器以及数据恢复。
在发送端,我们首先生成要传输的数据序列。
然后通过调制器将数据转换为带符号的复数序列。
接着,通过将复数序列进行IFFT,将频域数据转换为时间域信号。
在转换过程中,需要注意对数据进行零填充,以确保IFFT输出的结果长度是原始数据长度的整数倍。
最后,通过保护间隔插入器插入保护间隔,以减小信号之间的干扰。
在接收端,我们首先对接收到的信号进行保护间隔删除。
然后,通过FFT将时域信号转换为频域信号。
接着,通过解调器将复数序列转换为二进制数据。
最后,进行数据恢复,解码得到发送方发送的原始数据。
为了验证OFDM系统的性能,我们需要进行信道建模和误码率性能评估。
在信道建模中,我们可以选择多径信道模型,例如Rayleigh信道。
根据信道模型的不同,我们可以添加多径衰落和噪声等效果,从而模拟实际的信道环境。
在误码率性能评估中,我们可以通过比较接收到的数据与发送的原始数据,计算误码率。
在MATLAB中,我们可以使用信号处理工具箱和通信工具箱来实现这些功能。
信号处理工具箱提供了丰富的功能和算法,例如IFFT和FFT,用于信号处理和频谱分析。
通信工具箱则提供了OFDM系统建模和仿真所需的函数和工具,例如调制器、解调器等。
在进行OFDM系统设计与仿真时,我们可以根据不同的场景和需求进行调整和优化。
例如,可以尝试不同的调制方式、不同的子载波数量和间距,以及不同的保护间隔长度。
此外,还可以改变不同参数下的OFDM系统性能,如带宽利用率、误码率等。
总之,基于MATLAB的OFDM系统设计与仿真是一项重要的研究工作。
第1章绪论正交频分复用(OFDM, Orthogonal Frequency Division Multiplexing) 是一种特殊的多载波方案,它可以被看作一种调制技术,也可以被当作是一种复用技术。
1.1研究OFDM的意义及背景现代通信的发展是爆炸式的。
从电报、电话到今天的移动电话、互联网,人们从中享受了前所未有的便利和高效率。
从有线到无线是一个飞跃,从完成单一的话音业务到完成视频、音频、图像和数据相结合的综合业务功能更是一个大的飞跃。
在今天,人们获得了各种各样的通信服务,例如,固定电话、室外的移动电话的语音通话服务,有线网络的上百兆bit的信息交互。
但是通信服务的内容和质量还远不能令人满意,现有几十Kbps传输能力的无线通信系统在承载多媒体应用和大量的数据通信方面力不从心:现有的通信标准未能全球统一,使得存在着跨区的通信障碍;另一方面,从资源角度看,现在使用的通信系统的频谱利用率较低,急需高效的新一代通信系统的进入应用。
目前,3G的通信系统己经进入商用,但是其传输速率最大只有2Mbps,仍然有多个标准,在与互联网融合方面也考虑不多。
这些决定了3G通信系统只是一个对现有移动通信系统速度和能力的提高,而不是一个全球统一的无线宽带多媒体通信系统。
因此,在全世界范围内,人们对宽带通信正在进行着更广泛深入的研究]4[。
正交频分复用(OFDM, Orthogonal Frequency Division Multiplexing) 是一种特殊的多载波方案,它可以被看作一种调制技术,也可以被当作是一种复用技术。
选择OFDM的一个主要原因在于该系统能够很好地对抗频率选择性衰落或窄带干扰。
正交频分复用(OFDM)最早起源于20世纪50年代中期,在60年代就已经形成恶劣使用并行数据传输和频分复用的概念。
1970年1月首次公开发表了有关OFDM的专利。
在传统的并行数据传输系统中,整个信号频段被划分为N个相互不重叠的频率子信道。
基于Matlab平台的OFDM系统仿真分析的开题报告一、选题背景OFDM(Orthogonal Frequency Division Multiplexing)是近年来广泛应用的一种调制技术,其使用频谱效率高、抗多路径衰落、抗干扰能力强等优点,被广泛应用于各种通信系统中。
针对OFDM调制技术在无线通信中的应用和性能评估,需要进行系统仿真分析。
二、研究内容本次论文的研究内容包括:1. Matlab平台下OFDM系统的建模和仿真,包括基带处理、载波调制、FFT等过程;2. 分析OFDM系统在不同信道下的性能表现,如在高斯噪声信道、多径衰落信道等情况下的误码率;3. 研究OFDM系统的调制解调技术,包括采用不同的调制方式,如QPSK、16QAM、64QAM等;4. 研究OFDM系统的同步技术,包括频率同步、时间同步等;5. 研究OFDM系统的信道均衡技术。
三、研究方法本论文采用Matlab平台进行OFDM系统的建模与仿真,并基于仿真结果进行性能分析。
具体方法包括:1. 将OFDM调制技术进行数学建模;2. 在Matlab中编写程序实现OFDM调制与解调、均衡、同步等过程;3. 进行OFDM系统仿真,并记录仿真结果,如误码率等性能参数;4. 对仿真结果进行分析与总结,验证OFDM系统在不同场景下的性能表现;5. 进一步研究OFDM系统中关键技术的性能特点和参数调整方法等。
四、进度计划1. 第一周:确定选题,完成文献调研和分析;2. 第二周:在Matlab平台建立OFDM系统建模,并编写相关代码;3. 第三周:对OFDM系统进行基础仿真,记录并分析性能结果;4. 第四周:加入多路径衰落信道因素,进行OFDM性能分析;5. 第五周:研究OFDM调制解调技术,分别采用QPSK、16QAM、64QAM调制方式,分析性能表现;6. 第六周:研究OFDM系统同步技术,包括频率同步、时间同步等;7. 第七周:研究OFDM系统的信道均衡技术;8. 第八周:进行总结和撰写论文。
一、实习目的1、熟悉通信相关方面的知识、学习并掌握OFDM技术的原理2、熟悉MATLAB语言3、设计并实现OFDM通信系统的建模与仿真二、实习要求仿真实现OFDM调制解调,在发射端,经串/并变换和IFFT变换,加上保护间隔(又称“循环前缀”),形成数字信号,通过信道到达接收端,结束端实现反变换,进行误码分析三、实习内容1.实习题目《正交频分复用OFDM系统建模与仿真》2.原理介绍OFDM的基本原理就是把高速的数据流通过串并变换,分配到传输速率相对较低的若干个子信道中进行传输。
由于每个子信道中的符号周期会相对增加,因此可以减轻由无线信道的多径时延扩展所产生的时间弥散性对系统造成的影响。
并且还可以在OFDM符号之间插入保护间隔,令保护间隔大于无线信道的最大时延扩展,这样就可以最大限度地消除由于多径而带来的符号间干扰(ISI)。
而且,一般都采用循环前缀作为保护间隔,从而可以避免由多径带来的子载波间干扰((ICI) 。
3.原理框图图1-1 OFDM 原理框图4. 功能说明4.1确定参数需要确定的参数为:子信道,子载波数,FFT 长度,每次使用的OFDM 符号数,调制度水平,符号速率,比特率,保护间隔长度,信噪比,插入导频数,基本的仿真可以不插入导频,可以为0。
4.2产生数据使用个随机数产生器产生二进制数据,每次产生的数据个数为carrier_count * symbols_per_carrier * bits_per_symbol 。
4.3编码交织交织编码可以有效地抗突发干扰。
4.4子载波调制OFDM 采用BPSK 、QPSK 、16QAM 、64QAM4种调制方式。
按照星座图,将每个子信道上的数据,映射到星座图点的复数表示,转换为同相Ich 和正交分量Qch 。
其实这是一种查表的方法,以16QAM 星座为例,bits_per_symbol=4,则每个OFDM 符号的每个子信道上有4个二进制数{d1,d2,d3,d4},共有16种取值,对应星座图上16个点,每个点的实部记为Qch 。
为了所有的映射点有相同高的平均功率,输出要进行归一化,所以对应BPSK,PQSK,16QAM,64QAM ,分别乘以归一化系数系数1,21, 101, 421.输出的复数序列即为映射后的调制结果。
4.5串并转换。
将一路高速数据转换成多路低速数据4.6 IFFT 。
对上一步得到的相同分量和正交分量按照(Ich+Qch*i )进行IFFT 运算。
并将得到的复数的实部作为新的Ich ,虚部作为新的Qch 。
在实际运用中, 信号的产生和解调都是采用数字信号处理的方法来实现的, 此时要对信号进行抽样, 形成离散时间信号。
由于OFDM 信号的带宽为B=N ·Δf , 信号必须以Δt=1/B=1/(N ·Δf)的时间间隔进行采样。
采样后的信号用sn,i 表示, i = 0, 1, …, N-1,则有∑-==1/2j ,,e 1N k Nik kn in SNs π从该式可以看出,它是一个严格的离散反傅立叶变换(IDFT )的表达式。
IDFT 可以采用快速反傅立叶变换(IFFT)来实现4.7加入保护间隔。
由IFFT 运算后的每个符号的同相分量和正交分量分别转换为串行数据,并将符号尾部G 长度的数据加到头部,构成循环前缀。
如果加入空的间隔,在多径传播的影响下,会造成载波间干扰ICI 。
保护见个的长度G 应该大于多径时的扩张的最大值。
保护时间FFT 积分时间子载波1延迟的子载波2OFDM 符号周期子载波2对子载波1的干扰部分图 1-2 多径情况下,空闲保护间隔在子载波间造成的干扰保护间隔保护间隔IFFT 输出IFFT IFFT时间复制T gT FFTT s符号N符号N -1符号N +14.8加窗加窗是为了降低系统的PAPR ,滚降系数为1/32。
通过这种方法,可以显著地改善OFDM 通信系统高的PAPR 分布,大大降低了峰值信号出现的概率以及对功率放大器的要求,节约成本。
经常被采用的窗函数是升余弦窗()()()()()()⎪⎩⎪⎨⎧-+++=s s s T T t T t t w βπβππcos 5.05.00.1cos 5.05.0 ()s sss s T t T T t T T t βββ+≤≤≤≤≤≤10 (1-2)图1-9 经过加窗处理后的OFDM 符号示意图4.9通过信道。
图1-3 保护间隔的插入过程信道分为多径实验信道和高斯白噪声信道。
多径时延信道直射波河延迟波对于标准时间按照固定比率递减,因此多径时延信道参数为比率和对大延迟时间。
4.10同步。
同步是决定OFDM系统高性能十分重要的方面,实际OFDM系统都有同步过称。
主要同步方法有使用导频,循环前缀,忙算法三种。
研究目的为同步的可以详细实现本步,基本的方针可以略过此步,假设接收端已经于发射端同步。
4.11去掉保护间隔。
根据同步得到的数据,分别见给每个符号的同相分量和正交分量开头的保护间隔去掉。
4.12并串转换。
将每个符号分布在子信道上的数据,还原为一路串行数据。
4.13 FFT。
对每个符号的同相分量和正交分量按照(Ich+Qch*i)进行FFT运算。
并将得到的实部作为新的Ich,虚部作为新的Qch。
与发端相类似,上述相关运算可以通过离散傅立叶变换(DFT)或快速傅立叶变换(FFT)来实现,即:∑-=-=1/π2j,,e1NiNikinknr NR4.14子载波解调FFT后的同相粉脸感和正交分量两组数据在星座图上对饮高的点,由于噪声和信道的影响,不再是严格的发送端的星座图。
将得到的星座图上的点按照最近原则判决为原星座图上的点,并按映射规则还原为一组数据。
4.15解码解交织。
按照编码交织对应解码,解交织的方法,还原为原始数据,并进行纠错处理。
4.16计算误码率。
比较第2步产生的数据和接收到的数据,计算误码率BER5.实现步骤5.1 16QAM的调制函数function [complex_qam_data]=qam16(bitdata)%modulation of 16QAM,modulate bitdata to 16QAM complex signalX1=reshape(bitdata,4,length(bitdata)/4)';d=1;%min distance of symblefor i=1:length(bitdata)/4;for j=1:4X1(i,j)=X1(i,j)*(2^(4-j));endsource(i,1)=1+sum(X1(i,:));%convert to the number 1 to 16endmapping=[-3*d 3*d;-d 3*d;d 3*d;3*d 3*d;-3*d d;-d d;d d;3*d d;-3*d -d;-d -d;d -d;3*d -d;-3*d -3*d;-d -3*d;d -3*d;3*d -3*d];for i=1:length(bitdata)/4qam_data(i,:)=mapping(source(i),:);%data mappingendcomplex_qam_data=complex(qam_data(:,1),qam_data(:,2));5.2 16QAM的解调函数。
function [demodu_bit_symble]=demoduqam16(Rx_serial_complex_symbols)%将得到的串行16QAM数据解调成二进制比特流complex_symbols=reshape(Rx_serial_complex_symbols,length(Rx_serial_complex_symbols),1); d=1;mapping=[-3*d 3*d;-d 3*d;d 3*d;3*d 3*d;-3*d d;-d d;d d;3*d d;-3*d -d;-d -d;d -d;3*d -d;-3*d -3*d;-d -3*d;d -3*d;3*d -3*d];complex_mapping=complex(mapping(:,1),mapping(:,2));for i=1:length(Rx_serial_complex_symbols);for j=1:16;metrics(j)=abs(complex_symbols(i,1)-complex_mapping(j,1));end[min_metric decode_symble(i)]= min(metrics) ; %将离某星座点最近的值赋给decode_symble(i)enddecode_bit_symble=de2bi((decode_symble-1)','left-msb');demodu_bit_symble=reshape(decode_bit_symble',1,length(Rx_serial_complex_symbols)*4);5.3加窗函数function [rcosw]=rcoswindow(beta, Ts)%定义升余弦窗,其中beta为滚降系数,Ts为包含循环前缀的OFDM符号的长度,Ts为正偶数t=0:(1+beta)*Ts;rcosw=zeros(1,(1+beta)*Ts);for i=1:beta*Ts;rcosw(i)=0.5+0.5*cos(pi+ t(i)*pi/(beta*Ts));endrcosw(beta*Ts+1:Ts)=1;for j=Ts+1:(1+beta)*Ts+1;rcosw(j-1)=0.5+0.5*cos((t(j)-Ts)*pi/(beta*Ts));endrcosw=rcosw';%变换为列向量5.4 OFDM主程序clear all;close all;carrier_count=200;%子载波数symbols_per_carrier=12;%每子载波含符号数bits_per_symbol=4;%每符号含比特数,16QAM调制IFFT_bin_length=512;%FFT点数PrefixRatio=1/4;%保护间隔与OFDM数据的比例1/6~1/4GI=PrefixRatio*IFFT_bin_length ;%每一个OFDM符号添加的循环前缀长度为1/4*IFFT_bin_length 即保护间隔长度为128beta=1/32;%窗函数滚降系数GIP=beta*(IFFT_bin_length+GI);%循环后缀的长度20SNR=15; %信噪比dB%==================================================%================信号产生===================================baseband_out_length = carrier_count * symbols_per_carrier * bits_per_symbol;%所输入的比特数目carriers = (1:carrier_count) + (floor(IFFT_bin_length/4) - floor(carrier_count/2));%共轭对称子载波映射复数数据对应的IFFT点坐标conjugate_carriers = IFFT_bin_length - carriers + 2;%共轭对称子载波映射共轭复数对应的IFFT点坐标baseband_out=round(rand(1,baseband_out_length));%输出待调制的二进制比特流%==============16QAM调制====================================complex_carrier_matrix=qam16(baseband_out);%列向量complex_carrier_matrix=reshape(complex_carrier_matrix',carrier_count,symbols_per_carrier)';%s ymbols_per_carrier*carrier_count 矩阵figure(1);plot(complex_carrier_matrix,'*r');%16QAM调制后星座图title('16QAM调制后星座图')axis([-4, 4, -4, 4]);grid on%=================IFFT===========================IFFT_modulation=zeros(symbols_per_carrier,IFFT_bin_length);%添0组成IFFT_bin_length IFFT 运算IFFT_modulation(:,carriers ) = complex_carrier_matrix ;%未添加导频信号,子载波映射在此处IFFT_modulation(:,conjugate_carriers ) = conj(complex_carrier_matrix);%共轭复数映射%================================================================= signal_after_IFFT=ifft(IFFT_modulation,IFFT_bin_length,2);%OFDM调制即IFFT变换time_wave_matrix =signal_after_IFFT;%时域波形矩阵,行为每载波所含符号数,列ITTF点数,N个子载波映射在其内,每一行即为一个OFDM符号%===========================================================%=====================添加循环前缀与后缀====================================XX=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);for k=1:symbols_per_carrier;for i=1:IFFT_bin_length;XX(k,i+GI)=signal_after_IFFT(k,i);endfor i=1:GI;XX(k,i)=signal_after_IFFT(k,i+IFFT_bin_length-GI);%添加循环前缀endfor j=1:GIP;XX(k,IFFT_bin_length+GI+j)=signal_after_IFFT(k,j);%添加循环后缀endendtime_wave_matrix_cp=XX;%添加了循环前缀与后缀的时域信号矩阵,此时一个OFDM符号长度为IFFT_bin_length+GI+GIP=660%==============OFDM符号加窗========================================== windowed_time_wave_matrix_cp=zeros(1,IFFT_bin_length+GI+GIP);for i = 1:symbols_per_carrierwindowed_time_wave_matrix_cp(i,:) = real(time_wave_matrix_cp(i,:)).*rcoswindow(beta,IFFT_bin_length+GI)';%加窗升余弦窗end%========================生成发送信号,并串变换==================================================windowed_Tx_data=zeros(1,symbols_per_carrier*(IFFT_bin_length+GI)+GIP);windowed_Tx_data(1:IFFT_bin_length+GI+GIP)=windowed_time_wave_matrix_cp(1,:);for i = 1:symbols_per_carrier-1 ;windowed_Tx_data((IFFT_bin_length+GI)*i+1:(IFFT_bin_length+GI)*(i+1)+GIP)=windowed_ti me_wave_matrix_cp(i+1,:);%并串转换,循环后缀与循环前缀相叠加end%=======================================================Tx_data=reshape(windowed_time_wave_matrix_cp',(symbols_per_carrier)*(IFFT_bin_length+GI +GIP),1)';%加窗后循环前缀与后缀不叠加的串行信号%================================================================= temp_time1 = (symbols_per_carrier)*(IFFT_bin_length+GI+GIP);%加窗后循环前缀与后缀不叠加发送总位数figure (2)subplot(2,1,1);plot(0:temp_time1-1,Tx_data );%循环前缀与后缀不叠加发送的信号波形grid onylabel('Amplitude (volts)')xlabel('Time (samples)')title('循环前后缀不叠加的OFDM Time Signal')temp_time2 =symbols_per_carrier*(IFFT_bin_length+GI)+GIP;subplot(2,1,2);plot(0:temp_time2-1,windowed_Tx_data);%循环后缀与循环前缀相叠加发送信号波形grid onylabel('Amplitude (volts)')xlabel('Time (samples)')title('循环前后缀叠加的OFDM Time Signal')%===============加窗的发送信号频谱================================= symbols_per_average = ceil(symbols_per_carrier/5);%符号数的1/5,10行avg_temp_time = (IFFT_bin_length+GI+GIP)*symbols_per_average;%点数,10行数据,10个符号averages = floor(temp_time1/avg_temp_time);average_fft(1:avg_temp_time) = 0;%分成5段for a = 0:(averages-1)subset_ofdm = Tx_data(((a*avg_temp_time)+1):((a+1)*avg_temp_time));%利用循环前缀后缀未叠加的串行加窗信号计算频谱subset_ofdm_f = abs(fft(subset_ofdm));%分段求频谱average_fft = average_fft + (subset_ofdm_f/averages);%总共的数据分为5段,分段进行FFT,平均相加endaverage_fft_log = 20*log10(average_fft);figure (3)subplot(2,1,2)plot((0:(avg_temp_time-1))/avg_temp_time, average_fft_log)%归一化0/avg_temp_time : (avg_temp_time-1)/avg_temp_timehold onplot(0:1/IFFT_bin_length:1, -35, 'rd')grid onaxis([0 0.5 -40 max(average_fft_log)])ylabel('Magnitude (dB)')xlabel('Normalized Frequency (0.5 = fs/2)')title('加窗的发送信号频谱')%====================添加噪声=================================Tx_signal_power = var(windowed_Tx_data);%发送信号功率linear_SNR=10^(SNR/10);%线性信噪比noise_sigma=Tx_signal_power/linear_SNR;noise_scale_factor = sqrt(noise_sigma);%标准差sigmanoise=randn(1,((symbols_per_carrier)*(IFFT_bin_length+GI))+GIP)*noise_scale_factor;%产生正态分布噪声序列Rx_data=windowed_Tx_data +noise;%接收到的信号加噪声%=====================接收信号串/并变换去除前缀与后缀==========================================Rx_data_matrix=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);for i=1:symbols_per_carrier;Rx_data_matrix(i,:)=Rx_data(1,(i-1)*(IFFT_bin_length+GI)+1:i*(IFFT_bin_length+GI)+GIP);%串并变换endRx_data_complex_matrix=Rx_data_matrix(:,GI+1:IFFT_bin_length+GI);%去除循环前缀与循环后缀,得到有用信号矩阵%==============================================================% OFDM解码16QAM解码%=================FFT变换=================================Y1=fft(Rx_data_complex_matrix,IFFT_bin_length,2);%OFDM解码即FFT变换Rx_carriers=Y1(:,carriers);%除去IFFT/FFT变换添加的0,选出映射的子载波Rx_phase =angle(Rx_carriers);%接收信号的相位Rx_mag = abs(Rx_carriers);%接收信号的幅度figure(4);polar(Rx_phase, Rx_mag,'bd');%极坐标坐标下画出接收信号的星座图title('极坐标下的接收信号的星座图')%==================================================================== ==[M, N]=pol2cart(Rx_phase, Rx_mag);Rx_complex_carrier_matrix = complex(M, N);figure(5);plot(Rx_complex_carrier_matrix,'*r');%XY坐标接收信号的星座图title('XY坐标接收信号的星座图')axis([-4, 4, -4, 4]);grid on%====================16qam解调======================================= Rx_serial_complex_symbols=reshape(Rx_complex_carrier_matrix',size(Rx_complex_carrier_mat rix, 1)*size(Rx_complex_carrier_matrix,2),1)' ;Rx_decoded_binary_symbols=demoduqam16(Rx_serial_complex_symbols);%============================================================ baseband_in = Rx_decoded_binary_symbols;figure(6);subplot(2,1,1);stem(baseband_out(1:100));title('输出待调制的二进制比特流')subplot(2,1,2);stem(baseband_in(1:100));title('接收解调后的二进制比特流')%================误码率计算========================================== bit_errors=find(baseband_in ~=baseband_out);bit_error_count = size(bit_errors, 2)ber=bit_error_count/baseband_out_length5.5实验仿真结果-4-3-2-101234-4-3-2-10123416QAM 调制后星座图010002000300040005000600070008000-0.50.5A m p l i t u d e (v o l t s )Time (samples)循环前后缀不叠加的OFDM Time Signal010002000300040005000600070008000-0.50.5A m p l i t u d e (v o l t s )Time (samples)循环前后缀叠加的OFDM Time SignalM a g n i t u d e (d B )Normalized Frequency (0.5 = fs/2)加窗的发送信号频谱902701800极坐标下的接收信号的星座图-4-3-2-101234X Y 坐标接收信号的星座图00.20.40.60.8100.51误码率bit_error_count =11ber =0.0011四、参考文献[ 1 ] Erich Cosby. Orthogonal Frequency Division Multip lexing(OFDM) Tutorial and Analysis[M ]. Northern Virginia Center,2001.[ 2 ] Mingqi L i, ,Qicong Peng, Yubai L i, Performance Evaluation ofMC - DS - CDMA Systems inMultipath Fading Channels[ J ]. 0- 7803 - 7547 - 5 /02, IEEE , 2002.[ 3 ] A Peled, A Ruiz. Frequency domain data transmission usingreduced computational comp lexity algorithms[C ]. In Proc.IEEE Int. Conf. Acoust. , Speech, Signal Processing, 1980.964 - 967.[ 4 ] R van Nee. OFDM WirelessMultimedia Communications[M ].Rrasad R. Artech House, 1998.[ 5 ] 周正兰,等. OFDM及其链路级平台的Simulink实现[ J ]. 中国数据通信, 2003, (10) : 90 - 92[ 6 ] 尹泽明,等. 精通MATLAB6 [M ]. 清华大学出版社, 2002.[ 7 ] 蔡涛, 等译. 无线通信原理与应用[M ]. 电子工业出版社,1999.[ 8 ]丁玉美,等. 数字信号处理[M]. 西安电子科技大学出版社, 2003.五、实习体会本次实习的题目是《OFDM系统的建模与仿真》,对于我们通信工程各专业的学生来说这也是毕业设计的一次热身,也让我们提前走上了工作的实习岗位,为以后工作和奋斗垫上了丰厚的基石。