【matlab编程代做】MATLAB实现基于无线宽带系统的正交频分复用(OFDM)的链路级和系统级仿真
无线通信原理_基于matlab的ofdm系统设计与仿真
基于matlab的ofdm系统设计与仿真摘要OFDM即正交频分复用技术,实际上是多载波调制中的一种。
其主要思想是将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到相互正交且重叠的多个子载波上同时传输。
该技术的应用大幅度提高无线通信系统的信道容量和传输速率,并能有效地抵抗多径衰落、抑制干扰和窄带噪声,如此良好的性能从而引起了通信界的广泛关注。
本文设计了一个基于IFFT/FFT算法与802.11a标准的OFDM系统,并在计算机上进行了仿真和结果分析。
重点在OFDM系统设计与仿真,在这部分详细介绍了系统各个环节所使用的技术对系统性能的影响。
在仿真过程中对OFDM信号使用QPSK调制,并在AWGN信道下传输,最后解调后得出误码率。
整个过程都是在MATLAB环境下仿真实现,对ODFM系统的仿真结果及性能进行分析,通过仿真得到信噪比与误码率之间的关系,为该系统的具体实现提供了大量有用数据。
第一章 ODMF 系统基本原理1.1多载波传输系统多载波传输通过把数据流分解为若干个子比特流,这样每个子数据流将具有较低的比特速率。
用这样的低比特率形成的低速率多状态符号去调制相应的子载波,构成了多个低速率符号并行发送的传输系统。
在单载波系统中,一次衰落或者干扰就会导致整个链路失效,但是在多载波系统中,某一时刻只会有少部分的子信道会受到衰落或者干扰的影响。
图1-1中给出了多载波系统的基本结构示意图。
图1-1多载波系统的基本结构多载波传输技术有许多种提法,比如正交频分复用(OFDM)、离散多音调制(DMT)和多载波调制(MCM),这3种方法在一般情况下可视为一样,但是在OFDM 中,各子载波必须保持相互正交,而在MCM 则不一定。
1.2正交频分复用OFDM 就是在FDM 的原理的基础上,子载波集采用两两正交的正弦或余弦函数集。
函数集{t n ωcos }, {t m ωsin } (n,m=0,1,2…)的正交性是指在区间(T t t +00,)内有正弦函数同理:)0()()(2/0cos *cos 00===≠⎪⎩⎪⎨⎧=⎰+m n m n m n T T tdt m t n T t t ωω 其中ωπ2=T (1-1)根据上述理论,令N 个子信道载波频率为)(1t f ,)(2t f ,……,)(t f N ,并使其满足下面的关系:),1(,/0N k T k f f N k ⋯=+=,其中N T 为单元码持续时间。
matlab 通信仿真案例
matlab 通信仿真案例
在MATLAB中,通信仿真是一个常见的应用领域,可以用于模拟
和分析数字通信系统的性能。
下面我将从多个角度介绍几个常见的
通信仿真案例。
1. OFDM系统仿真,OFDM(正交频分复用)是一种常见的多载
波调制技术,用于高速数据传输。
你可以使用MATLAB来建立一个基
本的OFDM系统仿真模型,包括信道估计、均衡和解调等模块。
通过
仿真可以分析系统在不同信噪比下的误码率性能,优化系统参数以
及算法设计。
2. 无线通信系统仿真,你可以使用MATLAB建立一个简单的无
线通信系统仿真模型,包括传输信道建模、调制解调、信道编码、
多天线技术等。
通过仿真可以评估系统的覆盖范围、传输速率、抗
干扰能力等性能指标。
3. MIMO系统仿真,MIMO(多输入多输出)技术在无线通信中
得到了广泛应用。
你可以使用MATLAB建立一个MIMO系统仿真模型,包括空间多路复用、信道估计、预编码等。
通过仿真可以分析系统
的信道容量、波束赋形技术对系统性能的影响等。
4. LTE系统仿真,LTE(长期演进)是目前移动通信领域的主流技术之一。
你可以使用MATLAB建立一个LTE系统仿真模型,包括物理层信号处理、上下行链路传输、信道编码解码等。
通过仿真可以评估系统的覆盖范围、传输速率、干扰抑制能力等性能指标。
以上是一些常见的通信仿真案例,通过MATLAB你可以方便地建立仿真模型,分析系统性能,并优化系统设计。
希望这些案例能够帮助到你。
OFDM技术仿真MATLAB代码
第一章绪论1.1简述OFDM是一种特殊的多载波传输方案,它可以被看作是一种调制技术,也可以被当作一种复用技术。
多载波传输把数据流分解成若干子比特流,这样每个子数据流将具有低得多的比特速率,用这样的低比特率形成的低速率多状态符号再去调制相应的子载波,就构成多个低速率符号并行发送的传输系统。
正交频分复用是对多载波调制(MCM,Multi-Carrier Modulation)的一种改进。
它的特点是各子载波相互正交,所以扩频调制后的频谱可以相互重叠,不但减小了子载波间的干扰,还大大提高了频谱利用率。
符号间干扰是多径衰落信道宽带传输的主要问题,多载波调制技术包括正交频分复用(OFDM)是解决这一难题中最具前景的方法和技术。
利用OFDM技术和IFFT方式的数字实现更适宜于多径影响较为显著的环境,如高速WLAN 和数字视频广播DVB等。
OFDM作为一种高效传输技术备受关注,并已成为第4代移动通信的核心技术。
如果进行OFDM系统的研究,建立一个完整的OFDM 系统是必要的。
本文在简要介绍了OFDM 基本原理后,基于MATLAB构建了一个完整的OFDM动态仿真系统。
1.2 OFDM基本原理概述1.2.1 OFDM的产生和发展OFDM的思想早在20世纪60年代就已经提出,由于使用模拟滤波器实现起来的系统复杂度较高,所以一直没有发展起来。
在20世纪70年代,提出用离散傅里叶变换(DFT)实现多载波调制,为OFDM的实用化奠定了理论基础;从此以后,OFDM在移动通信中的应用得到了迅猛的发展。
OFDM系统收发机的典型框图如图1.1所示,发送端将被传输的数字信号转换成子载波幅度和相位的映射,并进行离散傅里叶变换(IDFT)将数据的频谱表达式变换到时域上。
IFFT变换与IDFT变换的作用相同,只是有更高的计算效率,所以适用于所有的应用系统。
其中,上半部分对应于发射机链路,下半部分对应于接收机链路。
由于FFT 操作类似于IFFT ,因此发射机和接收机可以使用同一硬件设备。
mimoofdm无线通信技术与matlab代码
mimoofdm无线通信技术与matlab代码1. 引言1.1 概述无线通信技术的发展迅猛,随着移动互联网时代的到来,人们对高速、稳定的无线通信需求日益增加。
MIMO-OFDM无线通信技术作为一种重要的解决方案,在提升系统容量和抗干扰性能方面具有显著优势。
本文旨在介绍MIMO-OFDM 无线通信技术原理,并借助MATLAB代码实现,通过仿真和性能评估分析展示其有效性和优越性。
1.2 文章结构本文分为五个部分:引言、MIMO-OFDM无线通信技术、MATLAB代码实现、实验结果与讨论以及结论与展望。
在引言部分,我们将简要介绍文章的背景和目标。
接下来,会详细讲解MIMO-OFDM无线通信技术的基本原理,并说明其在提高系统容量和抗干扰性能方面的作用。
然后,我们会详细描述如何使用MATLAB编写MIMO-OFDM系统模拟代码,并进行性能评估与分析。
随后,我们会展示仿真参数设置和结果展示,并对结果进行深入分析和性能讨论。
最后,在结论与展望部分,我们将总结本文的研究工作和贡献,并讨论目前的不足之处以及可能的改进方案。
1.3 目的本文的主要目的是深入介绍MIMO-OFDM无线通信技术及其原理,并通过MATLAB代码实现来验证其性能。
通过对实验结果进行分析和讨论,我们旨在揭示MIMO-OFDM技术在提高系统容量和抗干扰性能方面的优势。
同时,本文也希望为读者提供一个了解和学习MIMO-OFDM无线通信技术以及使用MATLAB进行系统模拟的参考。
以上就是“1. 引言”部分内容,概述了本文的背景、目标和结构。
在接下来的章节中,我们将逐一展开讲解MIMO-OFDM无线通信技术、MATLAB代码实现、实验结果与讨论以及结论与展望部分。
2. MIMO-OFDM无线通信技术:2.1 MIMO技术介绍:多输入多输出(MIMO)技术是一种通过在发射和接收端使用多个天线来增加系统容量和提高通信质量的无线通信技术。
MIMO技术利用空间上的多样性,通过在不同天线之间形成独立的传输通道,从而带来更好的抗干扰能力和信号接收品质。
基于Matlab的OFDM系统仿真
基于Matlab的OFDM系统仿真摘要:正交频分复用(OFDM)是一种多载波宽带数字调制技术。
相比一般的数字通信系统,它具有频带利用率高和抗多径干扰能力强等优点,因而适合于高速率的无线通信系统。
正交频分复用OFDM是第四代移动通信的核心技术。
论文首先简要介绍了OFDM 基本原理。
在给出OFDM系统模型的基础上,用MATLAB语言实现了整个系统的计算机仿真并给出参考设计程序。
最后给出在不同的信道条件下,对OFDM系统误码率影响的比较曲线,得出了较理想的结论,通过详细分析了了技术的实现原理,用软件对传输的性能进行了仿真模拟并对结果进行了分析。
介绍了OFDM技术的研究意义和背景及发展趋势,还有其主要技术和对其的仿真。具体如下:首先介绍了OFDM的历史背景、发展现状及趋势、研究意义和研究目的及研究方法和OFDM的基本原理、基本模型、OFDM的基本传输技术及其应用,然后介绍了本课题所用的仿真工具软件MATLAB,并对其将仿真的OFDM各个模块包括信道编码、交织、调制方式、快速傅立叶变换及无线信道进行介绍,最后是对于OFDM的流程框图进行分析和在不影响研究其传输性的前提下进行简化,并且对其仿真出来的数据图形进行分析理解。关键词:OFDM;MATLAB;仿真一、OFDM的意义及背景现代通信的发展是爆炸式的。
从电报、电话到今天的移动电话、互联网,人们从中享受了前所未有的便利和高效率。
从有线到无线是一个飞跃,从完成单一的话音业务到完成视频、音频、图像和数据相结合的综合业务功能更是一个大的飞跃。
在今天,人们获得了各种各样的通信服务,例如,固定电话、室外的移动电话的语音通话服务,有线网络的上百兆bit的信息交互。
但是通信服务的内容和质量还远不能令人满意,现有几十Kbps传输能力的无线通信系统在承载多媒体应用和大量的数据通信方面力不从心:现有的通信标准未能全球统一,使得存在着跨区的通信障碍;另一方面,从资源角度看,现在使用的通信系统的频谱利用率较低,急需高效的新一代通信系统的进入应用。
matlab通信仿真实例
matlab通信仿真实例在Matlab中进行通信系统的仿真,可以涉及到多种不同的通信技术和协议,包括调制解调、信道编码、多址接入等。
以下以OFDM系统为例,介绍Matlab 中通信仿真的实例。
OFDM(正交频分复用)是一种常用于现代通信系统中的技术,它将高速数据流分割成多个较低速的子流,并将每个子流分配到不同的子载波上。
优点是能够抵抗多径效应和频率选择性衰落,并提供高数据速率。
首先,我们需要创建一个包含OFDM系统参数的结构体。
例如:ofdmParam.M = 16; % 子载波数量ofdmParam.K = 4; % 用于混合多路复用的用户数量ofdmParam.N = ofdmParam.M * ofdmParam.K; % 总子载波数量ofdmParam.CP = 16; % 循环前缀长度接下来,我们可以生成用于OFDM仿真的数据流。
例如,我们可以使用随机整数生成器生成一系列整数,并将其转换为复数形式的调制符号:data = randi([0, ofdmParam.M-1], 1, ofdmParam.N);dataMod = qammod(data, ofdmParam.M);然后,我们可以创建一个包含OFDM信号的函数。
在OFDM系统中,生成的数据符号将分配到不同的子载波上,然后在时域中通过插入循环前缀进行叠加:function[ofdmSignal] = createOFDMSignal(dataMod, ofdmParam) ofdmSignal = [];for k = 0:ofdmParam.K-1% 提取相应的数据符号,并进行IFFTofdmData =ifft(dataMod(k*ofdmParam.M+1:(k+1)*ofdmParam.M));% 添加循环前缀ofdmDataWithCP = [ofdmData(end-ofdmParam.CP+1:end), ofdmData];% 将OFDM符号添加到OFDM信号中ofdmSignal = [ofdmSignal, ofdmDataWithCP];endend将OFDM信号传输到信道中,我们可以使用加性高斯白噪声(AWGN)信道模型来模拟实际通信环境:EbNo = 10; % 信噪比snr =10*log10(ofdmParam.N*ofdmParam.M/(ofdmParam.N*ofdmParam.M+1 )*(10^(EbNo/10)));ofdmSignalNoisy = awgn(ofdmSignal, snr, 'measured');最后,我们可以对接收到的OFDM信号进行解调和信号恢复。
基于MATLAB实现OFDM的解码(5)
毕业论文题目基于MATLAB实现OFDM的解码2019 年 4 月基于MATLAB实现OFDM系统的解码摘要自80年代,数字移动通信技术逐渐开始成熟,并开始应用在各式各样的,种类不同的无线通信系统,例如,数字集群电话,数字蜂窝电话,无线寻呼等,以上使用的是特高频/甚高频波段的数字移动通信。
但是这两者的移动信道存在很多问题,噪声干扰,在多径传播时易造成码间串扰,选择性衰弱等。
为解决这些问题,又出现了一种更好的,更高效的调制方式,就是(正交频分复用)OFDM。
它是第四代移动通信技术的关键、核心技术,也被广泛应用在移动通信的领域。
它不仅信道利用率比较高,而且抗衰弱能力良好。
正交频分复用(OFDM)发送的信号用码元周期为 T的不归零方波作为其基带码型,并由一组正交的正弦信号作为其副载波调制而成的。
OFDM的信号产生与解调的过程就是 IDFT/DFT 的变换过程。
正交频分复用(OFDM)是一种调制技术,在许多新兴的宽带无线和有线通信系统中得到了广泛应用。
由于OFDM技术具有利用多个频谱重叠的低速副载波传输高速数据流的能力,因此它具有频谱效率高、抗载波间和符号间抗干扰性、对服务器信道条件的适应性等优点,近年来,OFDM技术的研究越来越深入。
基于OFDM传输技术,被认为是未来超高速光传输的一种有前途的技术。
它可以构建一种在频谱分配和数据速率调节方面具有极大灵活性和可扩展性的新型弹性光网络结构,以支持未来多种业务和互联网流量的快速增长。
关键字:正道频分复用、OFDM、调制方式Decoding of OFDM System Based on MATLABAbstractSince the 1980s, digital mobile communication technology has gradually matured, and began to be used in a variety of different types of wireless communication systems, such as digital trunking telephone, digital cellular phone, wireless paging, etc. The above uses digital mobile communication in UHF/VHF band. However, there are many problems in both mobile channels, such as noise interference, intersymbol interference and selective fading in multipath propagation. In order to solve these problems, a better and more efficient modulation method has emerged, namely(orthogonal frequency division multiplexing) OFDM. It is the key and core technology of the fourth generation mobile communication technology. It is also widely used in the field of mobile communication. It not only has high channel utilization, but also has good anti-fading ability. Orthogonal Frequency Division Multiplexing (OFDM) signals are modulated by a set of orthogonal sinusoidal signals as their subcarriers, using the non-return zero square wave with the symbol period T as its baseband code type. The process of signal generation and demodulation in OFDM is the transformation process of IDFT/DFT. Orthogonal Frequency Division Multiplexing (OFDM) is a modulation technology, which has been widely used in many emerging broadband wireless and wired communication systems. Because OFDM technology has the ability to transmit high-speed data streams using low-speed subcarriers with overlapping spectrum, it has the advantages of high spectral efficiency, anti-interference between carriers and symbols, and adaptability to server channel conditions. In recent years, the research of OFDM technology has become more and more in-depth. Based on OFDM transmission technology, it is considered as a promising technology for ultra-high-speed optical transmission in the future. It can construct a new elastic optical network structure with great flexibility and scalability in spectrum allocation and data rate regulation to support the rapid growth of various services and Internet traffic in the future.Key words: channel frequency division multiplexing, OFDM目录第一章绪论 (4)1.1 OFDM的研究背景、意义 (4)1.2关于OFDM的概述 (5)1.2.1 OFDM的发展 (5)1.2.2 OFDM的主要优点和缺点 (5)1.2.3 OFDM的应用 (6)第二章OFDM基本原理 (7)2.1 原理、数学描述 (7)2.1.1 OFDM基本原理 (8)2.1.2 OFDM的参数、特性 (9)2.1.3 子载波调制 (9)第三章OFDM的系统仿真 (12)3.1 MATLAB的特点和功能 (12)3.2 OFDM系统仿真 (13)3.2.1 OFDM时域波形 (13)3.2.2 OFDM子载波频谱 (14)3.2.3 QPSK调制 (15)3.2.4 QPSK调制星座图 (17)3.2.5 并串转换 (17)3.2.6 QPSK解调 (17)3.2.7 接收信号 (17)3.2.7 OFDM解码实现 (18)结束语 (22)参考文献 (23)致谢 (25)第一章绪论1.1 OFDM的研究背景、意义21世纪以后,无线通信技术发展迅速,史无前例。
ofdm的matlab实现
ofdm的matlab实现OFDM(正交频分复用)是一种常用的调制解调技术,被广泛应用于无线通信和数字电视等领域。
在本篇文章中,我们将探讨OFDM的基本原理,并介绍如何使用Matlab实现OFDM系统。
一、OFDM基本原理OFDM是一种基于频域的多载波调制技术,通过将高速数据流分成多个较低速的子流,并将这些子流分配到不同的频率载波上来传输数据。
通过这种方式,OFDM可以有效地抵抗频率选择性衰落和多径传播引起的时域间隔干扰,提供更好的抗干扰性能。
OFDM系统的主要构成部分包括信源、调制器(调制器和反调制器)和调制解调器(调制器和解调器)。
在发送端,调制器将输入数据流分为多个子流,并进行调制后输出。
在接收端,解调器对接收到的信号进行解调并还原为原始数据流。
OFDM调制器的实现主要依赖于以下两个关键概念:正交性和多载波调制。
1. 正交性:在OFDM系统中,子载波之间需要满足正交性条件,即相邻子载波之间的正弦波形式相互垂直,相位差为0或π。
这样可以确保子载波之间的干扰最小。
2. 多载波调制:OFDM系统中,将整个频率带宽划分为多个子载波,每个子载波都可以用不同的调制方式来传输数据。
常见的调制方式有BPSK、QPSK、16-QAM等。
二、Matlab实现OFDM系统下面我们将使用Matlab来实现OFDM系统。
按照OFDM系统的基本原理,需要完成以下几个步骤:1. 生成原始数据:首先,我们需要生成一组原始数据作为输入。
可以使用随机数生成器来生成一个指定长度的数据序列。
2. 子载波生成:根据系统设置,生成需要的子载波。
可以使用fft函数计算离散傅里叶变换,得到频域上的正弦波。
3. 数据调制:将原始数据按照设定的调制方式进行调制,得到对应的调制符号。
可以使用BPSK、QPSK或其他调制方式。
4. 倍频:将调制符号乘以子载波的复数载波,得到OFDM的时域信号。
5. CP(循环前缀)添加:为了避免多径效应引起的信号间干扰,在时域信号的开头添加一个与其末尾相同的循环前缀。
ofdm可见光通信matlab
ofdm可见光通信matlabOFDM(正交频分复用)是一种多载波调制技术,广泛应用于无线通信系统中。
而可见光通信是一种基于光波的通信技术。
本文将结合MATLAB软件,探讨OFDM技术在可见光通信中的应用。
我们来了解一下OFDM技术。
OFDM技术是一种将高速数据流分成多个低速子流并同时传输的技术。
它能够充分利用频谱资源,提高系统的传输效率。
OFDM技术通过将数据流分成多个子流,每个子流都在不同的频率上进行调制,然后将这些子流通过并行传输的方式发送出去。
接收端收到这些子流后,再将它们合并起来,得到原始的数据流。
OFDM技术在无线通信系统中广泛应用,如Wi-Fi、LTE等。
可见光通信是一种利用可见光波进行数据传输的技术。
它的工作原理是通过调制可见光波的亮度或频率来传输信息。
可见光通信具有频谱资源丰富、无电磁波辐射、安全性高等优点,因此在室内定位、室内导航、智能照明等领域呈现出广阔的应用前景。
将OFDM技术与可见光通信相结合,可以充分利用OFDM技术的优势,提高可见光通信系统的传输效率和可靠性。
在OFDM可见光通信系统中,发送端将要传输的数据流分成多个子流,并将每个子流分别调制到不同的频率上。
然后,通过LED灯或其他可见光发射器将这些子流转化为可见光信号并发送出去。
接收端使用光电二极管等光电器件将接收到的可见光信号转化为电信号,并通过解调和合并子流的方式得到原始的数据流。
MATLAB是一种功能强大的数学软件,也是进行OFDM可见光通信系统仿真的常用工具。
通过MATLAB,我们可以模拟OFDM可见光通信系统的传输过程,并对系统的性能进行评估。
首先,我们需要建立OFDM可见光通信系统的模型,包括发送端和接收端。
发送端的主要任务是将数据流分成多个子流,并将每个子流调制到不同的频率上。
接收端的主要任务是接收可见光信号,并将其转化为电信号,并通过解调和合并子流的方式得到原始的数据流。
在MATLAB中,我们可以使用OFDM调制器和解调器模块来实现OFDM调制和解调的功能。
基于matlab 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系统设计与仿真
基于MATLAB的OFDM系统设计与仿真OFDM(正交频分复用)是一种高效的调制技术,广泛应用于无线通信系统中。
本文将基于MATLAB对OFDM系统进行设计与仿真,并介绍其主要步骤和关键技术。
首先,我们需要对OFDM系统进行建模。
OFDM系统由发送端和接收端两部分组成。
发送端主要包括数据源、调制器、IFFT以及保护间隔插入器。
接收端主要包括保护间隔删除器、FFT、解调器以及数据恢复。
在发送端,我们首先生成要传输的数据序列。
然后通过调制器将数据转换为带符号的复数序列。
接着,通过将复数序列进行IFFT,将频域数据转换为时间域信号。
在转换过程中,需要注意对数据进行零填充,以确保IFFT输出的结果长度是原始数据长度的整数倍。
最后,通过保护间隔插入器插入保护间隔,以减小信号之间的干扰。
在接收端,我们首先对接收到的信号进行保护间隔删除。
然后,通过FFT将时域信号转换为频域信号。
接着,通过解调器将复数序列转换为二进制数据。
最后,进行数据恢复,解码得到发送方发送的原始数据。
为了验证OFDM系统的性能,我们需要进行信道建模和误码率性能评估。
在信道建模中,我们可以选择多径信道模型,例如Rayleigh信道。
根据信道模型的不同,我们可以添加多径衰落和噪声等效果,从而模拟实际的信道环境。
在误码率性能评估中,我们可以通过比较接收到的数据与发送的原始数据,计算误码率。
在MATLAB中,我们可以使用信号处理工具箱和通信工具箱来实现这些功能。
信号处理工具箱提供了丰富的功能和算法,例如IFFT和FFT,用于信号处理和频谱分析。
通信工具箱则提供了OFDM系统建模和仿真所需的函数和工具,例如调制器、解调器等。
在进行OFDM系统设计与仿真时,我们可以根据不同的场景和需求进行调整和优化。
例如,可以尝试不同的调制方式、不同的子载波数量和间距,以及不同的保护间隔长度。
此外,还可以改变不同参数下的OFDM系统性能,如带宽利用率、误码率等。
总之,基于MATLAB的OFDM系统设计与仿真是一项重要的研究工作。
matlab ofdm参数
在MATLAB中,OFDM(正交频分复用)的实现通常涉及以下参数:
1. **子载波数量**:这是OFDM信号中使用的总子载波数量。
在MATLAB中,这通常由参数`N`表示。
2. **符号周期**:每个OFDM符号所占的时间。
在MATLAB中,这通常由参数`Tb`表示。
3. **采样时间间隔**:在OFDM信号中,每个子载波之间的时间间隔。
在MATLAB中,这通常由参数`Ts`表示。
4. **调制方式**:使用的调制方案,如QPSK、16-QAM、64-QAM等。
在MATLAB中,这通常由参数`M`表示。
5. **循环前缀长度**:循环前缀是添加到OFDM符号的尾部的额外数据,以减少多径效应的影响。
在MATLAB中,这通常由参数`CP_len`表示。
6. **保护间隔**:OFDM符号之间的间隔,用于进一步减少多径效应的影响。
在MATLAB中,这通常由参数`GI_len`表示。
7. **信道模型**:模拟信道衰落和噪声的方式。
在MATLAB中,可以使用预定义的信道模型,如AWGN(加性白高斯噪声)或更复杂的信道模型。
8. **载波频率偏移**:模拟接收器与发送器之间的载波频率偏差。
9. **多径延迟**:模拟多径效应的延迟时间。
10. **比特加载策略**:根据信道条件和误码率要求,确定每
个子载波上传输的比特数。
这些参数可以根据实际应用的需要进行调整。
例如,如果您正在进行无线通信系统的仿真,您可能需要调整循环前缀长度以减少多径干扰,或者调整比特加载策略以最大化频谱效率。
OFDM完整仿真过程及解释(MATLAB)
OFDM完整仿真过程及解释(MATLAB)OFDM(正交频分复用)是一种多载波调制技术,在无线通信系统中得到广泛应用。
其基本原理是将高速数据流分成多个较低速的子载波,使得每个子载波的传输速率降低,从而提高了系统的可靠性和抗干扰性能。
以下是OFDM的完整仿真过程及解释。
1. 生成数据:首先,在MATLAB中生成需要传输的二进制数据,可以使用随机数生成函数randi(生成0和1的二进制序列。
2.编码:将生成的二进制数据进行编码,例如使用卷积码、块码等编码方式。
编码可以提高数据传输的可靠性,对抗信道中的噪声和干扰。
3.映射:将编码后的数据映射到调制符号,例如使用QPSK、16-QAM 等调制方式。
调制方式决定了每个符号所携带的比特数,不同调制方式具有不同的抗噪声和传输速率性能。
4.并行-串行转换:将映射后的调制符号进行并行-串行转换,将多个并行的调制符号转换为串行的数据流。
这是OFDM的关键步骤,将高速数据流分成多个较低速的子载波。
5. 添加保护间隔:为了消除多径传播引起的码间干扰,需要在串行数据流中插入保护间隔(Guard Interval),通常是循环前缀。
保护间隔使得子载波之间相互正交,从而避免了码间干扰。
6.IFFT:对添加保护间隔后的数据进行反快速傅里叶变换(IFFT),将时域信号转换为频域信号。
IFFT操作将子载波映射到频域,每个子载波代表系统的一个子信道。
7.添加导频:在OFDM符号的频域信号中添加导频,用于估计信道的频率响应和相位差。
导频通常位于频谱的首尾或者分布在整个频谱中,用于信道估计和均衡。
8.加载子载波:将导频和数据子载波合并,形成完整的OFDM符号。
数据子载波携带着编码后的数据,导频子载波用于信道估计。
9.加性高斯白噪声(AWGN)信道:将OFDM符号通过加性高斯白噪声信道进行传输。
AWGN信道是一种理想化的信道模型,可以模拟实际信道中的噪声和干扰。
10.解调:接收端对接收到的OFDM符号进行解调,包括载波恢复、频偏补偿、信道估计和均衡等操作。
基于matlab ofdm通信系统仿真代码
基于matlab ofdm通信系统仿真代码
OFDM通信系统仿真模拟是以正交频分复用技术(OFDM)作为主要的信号传输技术,在实现对无线信号的检测、编码、调制、叠加噤等功
能时可以通过Matlab等软件来进行模拟仿真。
仿真工作首先建立OFDM系统的信号模型,OFDM的原理是通过将
一个OFDM信号分成多个相互正交的子载波,并在每个子载波上实现移相、移幅调制,从而在信道上传输多路符号。
由于子载波之间相互正交,故可以实现多路数据同时传输,从而提高数据传输率和传输容量。
仿真建模过程中,首先根据要求确定可用的OFDM子载波数目以
及子载波的调制方式。
然后设定数据信道的配置,选择需要用到的信
道编码,这些元素将影响OFDM系统的信噪比和数据传输率。
最后定义
噪声接收,模拟噪声叠加,并实现对接收端信号的处理,存储等步骤。
通过上述步骤,系统建模工作就完成了。
之后可以使用Matlab
对模型进行仿真,看看OFDM系统表现如何。
仿真结果可以以图像的形
式显示出来,从而更好地理解传输的性能,从而有利于调整系统参数,提高系统的效率和可靠性。
ofdmmatlab仿真代码
ofdmmatlab仿真代码
OFDM(正交频分复用)是一种广泛应用于无线通信系统中的调制技术。
它通过将数据流分为多个子信道,并在每个子信道上传输正交的子载波来提高频谱效率和抗干扰能力。
MATLAB是一种常用的科学计算软件,可以用来进行OFDM系统的仿真和性能分析。
OFDM技术的原理是将高速数据流分成多个低速数据流,然后将每个低速数据流调制到正交的子载波上进行传输。
这些子载波之间彼此正交,可以避免干扰。
在接收端,通过对接收到的信号进行解调和合并,可以恢复出原始数据流。
在MATLAB中,可以使用通信工具箱中的函数来实现OFDM系统的仿真。
首先,需要设置OFDM系统的参数,如子载波数目、子载波间隔、保护间隔等。
然后,可以生成随机的数据流,并将其调制到各个子载波上。
接下来,可以添加信道模型,如多径衰落等,并对接收到的信号进行解调和合并。
最后,可以评估系统的性能,如误码率、信噪比等。
OFDM技术在无线通信中有许多应用,如Wi-Fi、LTE等。
它具有高频谱效率、抗干扰能力强等优点,能够提供高质量的数据传输和稳定的通信连接。
通过使用MATLAB进行OFDM系统的仿真,可以更好地理解和分析OFDM技术的性能特点,对于无线通信系统的设计和优化具有重要意义。
OFDM是一种重要的调制技术,能够提高无线通信系统的频谱效率和抗干扰能力。
MATLAB提供了丰富的函数和工具箱,可以用来进行OFDM系统的仿真和性能分析。
通过使用MATLAB进行仿真,可以更好地理解和分析OFDM技术的性能特点,对于无线通信系统的设计和优化具有重要意义。
mimoofdm无线通信技术与matlab代码 -回复
mimoofdm无线通信技术与matlab代码-回复MIMO-OFDM无线通信技术与Matlab代码引言:MIMO-OFDM(多输入多输出正交频分复用)无线通信技术是目前无线通信领域中最重要的一项技术。
它结合了多输入多输出系统(MIMO)和正交频分复用(OFDM)技术,能够在无线通信中达到更高的数据传输速率和更好的信号强度。
在本文中,我们将介绍MIMO-OFDM无线通信技术的原理,并使用Matlab代码进行模拟实验。
第一部分:MIMO技术介绍多输入多输出系统(MIMO)是一种利用多个天线来发送和接收信号的技术。
与传统的单输入单输出系统(SISO)相比,MIMO系统能够在相同频谱带宽下实现更高的信号传输速率和更好的抗干扰能力。
MIMO系统的基本原理是利用多个独立的信道来传输数据,每个信道都有一个独立的传输路径,这样可以增加数据传输的容量和可靠性。
第二部分:OFDM技术介绍正交频分复用(OFDM)是一种通过将高速数据流分成多个低速的子流,并使用正交子载波进行传输的技术。
通过将频谱分成多个子载波,每个子载波负责传输部分数据流,可以避免频谱上的干扰,并提高信号传输的可靠性。
OFDM技术在现代无线通信中得到了广泛应用,例如Wi-Fi和LTE等。
第三部分:MIMO-OFDM系统原理MIMO-OFDM系统将MIMO技术和OFDM技术相结合,以实现更高的数据传输速率和更好的信号质量。
在MIMO-OFDM系统中,发送端和接收端都有多个天线。
发送端通过MIMO技术将数据流分成多个子流,并分别通过各个天线进行发送。
接收端通过各个天线接收到的信号,利用MIMO技术进行信号处理和解调。
同时,利用OFDM技术将每个子流分配到不同的子载波上进行传输,以提高信号传输的可靠性。
第四部分:MIMO-OFDM系统的Matlab模拟实验为了演示MIMO-OFDM系统的工作原理,我们将使用Matlab进行模拟实验。
下面是一个简单的MIMO-OFDM系统的Matlab代码示例:matlab定义MIMO-OFDM系统参数numOfAntennasTx = 2; 发送端天线数numOfAntennasRx = 2; 接收端天线数numOfSubcarriers = 64; 子载波数生成随机发送信号data = randi([0 1],numOfAntennasTx*numOfSubcarriers,1);将数据流分成多个子流dataStreams = reshape(data,numOfAntennasTx,numOfSubcarriers);对每个子流进行OFDM调制for i=1:numOfAntennasTxofdmSignal(i,:) = ifft(dataStreams(i,:));end通过每个天线发送OFDM信号for i=1:numOfAntennasTxtxSignal(i,:) = awgn(ofdmSignal(i,:),10); 添加高斯白噪声end对接收到的信号进行MIMO信号处理和解调channelMatrix = randn(numOfAntennasRx,numOfAntennasTx) + 1i*randn(numOfAntennasRx,numOfAntennasTx); 信道矩阵,假设为随机信道rxSignal = channelMatrix * txSignal;对接收到的信号进行OFDM解调for i=1:numOfAntennasRxdemodSignal(i,:) = fft(rxSignal(i,:));end将多个子流合并为单个信号流receivedData =reshape(demodSignal,numOfAntennasRx*numOfSubcarriers,1);对接收到的信号进行信号解调和解码decodedData = (receivedData > 0.5);计算误码率ber = sum(decodedData ~= data) / length(data);以上代码中,我们首先定义了MIMO-OFDM系统的参数,包括发送端和接收端的天线数以及子载波数。
Matlab 完成简单的OFDM 信号的产生与解调程序
uoft = filter(b,a,u); %baseband signal (D) figure(7); subplot(211); plot(t(80:480),real(uoft(80:480))); subplot(212); plot(t(80:480),imag(uoft(80:480))); figure(8); subplot(211); plot(ff,abs(fft(uoft,q*FS))/FS); [Pxx,f]=pwelch(uoft,[],[],[],Rs); plot_Pxx3=10*log10(Pxx); subplot(212); plot(f,plot_Pxx3); %Upconverter s_tilde=(uoft.').*exp(1i*2*pi*fc*t); s=real(s_tilde); %passband signal (E) figure(9); plot(t(80:480),s(80:480)); figure(10); subplot(211); plot(ff,abs(fft(s,q*FS))/FS); [Pxx,f]=pwelch(s,[],[],[],Rs); plot_Pxx4=10*log10(Pxx); subplot(212); plot(f,plot_Pxx4); figure(11); subplot(211); plot(ff,abs(fft(((real(uoft).').*cos(2*pi*fc*t)),q*FS))/FS); [Pxx,f]=pwelch(((real(uoft).').*cos(2*pi*fc*t)),[],[],[],Rs); plot_Pxx5=10*log10(Pxx); subplot(212); plot(f,plot_Pxx5); figure(12); subplot(211); plot(ff,abs(fft(((imag(uoft).').*sin(2*pi*fc*t)),q*FS))/FS); [Pxx,f]=pwelch(((imag(uoft).').*sin(2*pi*fc*t)),[],[],[],Rs); plot_Pxx6=10*log10(Pxx); subplot(212); plot(f,plot_Pxx6);
Matlab实现OFDM调制
Matlab实现OFDM调制一、实验目的1、进一步加深对matlab的了解和使用,熟练掌握matlab的相关库函数。
2、学习OFDM调制的原理,通过实验加深对其理解。
3、学会用matlab实现BPSK调制和QPSK调制。
二、实验原理OFDM调制原理:OFDM ——OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM Multi-CarrierModulation,多载波调制的一种。
其主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。
正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰 ICI 。
每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上的可以看成平坦性衰落,从而可以消除符号间干扰。
而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。
在向B3G/4G演进的过程中,OFDM 是关键的技术之一,可以结合分集,时空编码,干扰和信道间干扰抑制以及智能天线技术,最大限度的提高了系统性能。
包括以下类型:V-OFDM,W-OFDM,F-OFDM,MIMO-OFDM,多带-OFDM。
三、实验容实验要求:(1)不加噪声时,调制出来的信号与原信号进行对比。
(2)加噪声时的误码率曲线图。
1、解调的原理框图2、BPSK调制:f(0)=1,f(1)=-1代码:original=randint(1,512*100,2); %源为0和1的随机序列,为1行51200列;用512个子载波,做100次bpsk=(-1).^original; %BPSK调制,将源中的0替换为-1,生成1行51200列的1和-1序列m=1;ioriginal=zeros(1,512*100); %生成零矩阵,定义变量初值ofdm=zeros(100,512);iofdm=zeros(100,512);iiofdm=zeros(1,512*100);cp=zeros(100,512+10);cpsend=zeros(1,(512+10)*100);icp=zeros(100,512);ibpsk=zeros(1,512*100);while m~=101ofdm(m,:)=bpsk(((m-1)*512+1):(m*512)); %将bpsk矩阵转化为100行512列的矩阵ofdmofdm(m,:)=ifft(ofdm(m,:),512); %OFDM调制,返回512点的逆向DFT cp(m,1:10)=ofdm(m,503:512); %添加长度为10的循环前缀,cp(m,11:end)=ofdm(m,:); %生成矩阵cp为100*(512+10)cpsend(((m-1)*(512+10)+1):(m*(512+10)))=cp(m,:);%cpspend为1*((512+10)*100)m=m+1;endcp1=cpsend; %没有添加噪声是调制生成的矩阵snr=-2:1:5; %信噪比ber=zeros(1,length(snr));light=1;for t=-2:1:5m=1; %解调while m~=101icp(m,:)=cpsend(((m-1)*512+m*10+1):(m*(512+10))); %去前缀10iofdm(m,:)=fft(icp(m,:),512); %将icp做返回512点的DFT iiofdm(((m-1)*512+1):(m*512))=iofdm(m,:); %iiofdm为1*(512*100)m=m+1;endfor n=1:(512*100)real_iiofdm=real(iiofdm(n));image_iiofdm=imag(iiofdm(n));distance1=sqrt((real_iiofdm+1)^2+image_iiofdm^2); %根据距离来判断是0还是1distance0=sqrt((real_iiofdm-1)^2+image_iiofdm^2);if distance1>=distance0ibpsk(n)=0;elseibpsk(n)=1;endendioriginal=ibpsk; %计算误码率flag=(original==ioriginal); %相等时flag为1,不相等时flag为0 error=numel(find(flag==0)); %统计0的个数ber(light)=error/51200; %计算误码率light=light+1;endsemilogy(snr,ber)BPSK调制的误码率曲线图:3、QPSK调制: f(00)= (1+i)/sqrt(2),f(01)= (-1+i)/sqrt(2), f(10)= (-1-i)/sqrt(2),f(11) =(1-i)/sqrt(2)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
% this function load the run-time data, save in a single mat file% called by script_load_part2% after finishing simulating each case, this function need to be called% all the analysis is based on the output of this functionfunctionload_part2(test_resource_allocation_idx,UE,MIMO,loaddir,savedir,a,b,overwrite_old,MaxSaveInd ex,save_info_factor,Comm_conf)filename = ['RA',num2str(test_resource_allocation_idx),'_UE',num2str(UE),'_FLA',num2str(Comm_conf.F_LA ),'_FPA',num2str(Comm_conf.F_PA),MIMO,'_trms',num2str(Comm_conf.t_rms),'f',num2str(Com m_conf.fd),'_s',num2str(Comm_conf.state),'N',num2str(Comm_conf.N),'subN',num2str(Comm_co nf.subN),'_E',num2str(Comm_conf.flg_csi_err),'c',num2str(Comm_conf.flg_offset),'D',num2str(Co mm_conf.DELAY),'BO',num2str(Comm_conf.BO_dB),'HPA',num2str(Comm_e_HPA_flg),'_B LER',num2str(Comm_conf.targetFER),'.mat'];if exist([savedir,'/',filename],'file') && ~overwrite_oldreturn;elsetest_possible_user_velocities = 30;test_possible_scenarios = {'micro1','macro1','macro3'};test_pissible_resource_allocations = {'RR','PF','MAXCI','PF2'};test_nu_active_users = UE;test_scenario = test_possible_scenarios{1};test_resource_allocation = test_pissible_resource_allocations{test_resource_allocation_idx};test_avg_velo_kmph = test_possible_user_velocities(1);%test_frame_period_factor = LARArate;test_case=['testCaseResult-Scn',test_scenario,'-ResAlloc',test_resource_allocation,'-PowCon','no', '-G','no','-NoUE',num2str(test_nu_active_users),'-kmph',num2str(test_avg_velo_kmph),'F_LA',nu m2str(Comm_conf.F_LA),'-F_PA',num2str(Comm_conf.F_PA)];save_user_fair = zeros(UE,save_info_factor * (b-a + 1) * MaxSaveIndex);save_user_ActiveCnt = uint16(zeros(UE,save_info_factor * (b-a + 1) * MaxSaveIndex));save_user_distance = save_user_ActiveCnt;save_user_mobID = save_user_ActiveCnt;save_user_velocity = uint8(save_user_ActiveCnt);if Comm_conf.N == 512,Comm_ed = 301;elseif Comm_conf.N == 1024,Comm_ed = 601;endNu_groups = floor(Comm_ed / Comm_conf.subN);save_user_sinr = int8(zeros(UE,save_info_factor * (b-a + 1) * MaxSaveIndex,Nu_groups));save_bs_sinr = int8(zeros(Nu_groups,save_info_factor * (b-a + 1) * MaxSaveIndex));save_bs_mobID = uint16(zeros(Nu_groups,save_info_factor * (b-a + 1) * MaxSaveIndex));save_bs_mod = int8(zeros(Nu_groups,save_info_factor * (b-a + 1) * MaxSaveIndex));save_bs_fec = int8(zeros(Nu_groups,save_info_factor * (b-a + 1) * MaxSaveIndex));save_bs_poweradjust = (zeros(Nu_groups,save_info_factor * (b-a + 1) * MaxSaveIndex));save_bs_FrminErr = int8(zeros(Nu_groups,save_info_factor * (b-a + 1) * MaxSaveIndex));save_bs_dist = uint16(zeros(Nu_groups,save_info_factor * (b-a + 1) * MaxSaveIndex));save_outageCnt = 0;save_totalBitsSent = 0;save_totalFrmErr = 0;nuUser = 0;for lp_nuDrops=a:bdir_name=[loaddir,'/',test_case,'Drp',num2str(lp_nuDrops),'_trms',num2str(Comm_conf.t_rms),'f' ,num2str(Comm_conf.fd),'_s',num2str(Comm_conf.state),'N',num2str(Comm_conf.N),'subN',num 2str(Comm_conf.subN),'_E',num2str(Comm_conf.flg_csi_err),'c',num2str(Comm_conf.flg_offset),' D',num2str(Comm_conf.DELAY),'BO',num2str(Comm_conf.BO_dB),'HPA',num2str(Comm_ e_HPA_flg),'_BLER',num2str(Comm_conf.targetFER)];lp_nuDropsfor k = 1:MaxSaveIndexload([dir_name,'/','user_gain_info_and_distance/saveIndex',num2str(k)]);idx = (lp_nuDrops-1) * MaxSaveIndex*save_info_factor + (k-1)*save_info_factor + 1: (lp_nuDrops-1) * MaxSaveIndex*save_info_factor + k*save_info_factor;save_user_ActiveCnt(:,idx) = user_ActiveCnt;save_user_distance(:,idx) = user_distance;save_user_mobID(:,idx) = user_mobID + nuUser;save_user_velocity(:,idx) = user_velocity;save_user_sinr(:,idx,:) = user_sinr;save_user_fair(:,idx) = user_fair;%save_user_sinr_noErr(:,idx,:) = user_sinr_noFeedBackErr;clear user*load([dir_name,'/','measurement/dataVals',num2str(k)]);%save_user_remFileSz(:,idx) = st_measurement.remFileSzStore;save_bs_sinr(:,idx) = st_measurement.snrFeedBack;save_bs_mobID(:,idx) = st_measurement.mobIdxStore + nuUser;%save_bs_sinr_noErr(:,idx) = st_measurement.snrFeedBackNoChErr;save_bs_mod(:,idx) = st_measurement.modStore;save_bs_fec(:,idx) = st_measurement.fecStore;save_bs_dist(:,idx) = st_measurement.distanceStore;save_bs_poweradjust(:,idx) = st_measurement.poweradjust;save_bs_FrminErr(:,idx) = st_measurement.FrminError;%save_bs_instTP(1,idx) = st_measurement.instThpt;endnuUser = max(max(save_user_mobID(:,lp_nuDrops * MaxSaveIndex*save_info_factor)));save_outageCnt=save_outageCnt+st_measurement.outageCnt;save_totalBitsSent=save_totalBitsSent+st_measurement.totalBitsSent;save_totalFrmErr = save_totalFrmErr + st_measurement.totalFramesinError;clear st_measurementendfec1 = [0 3 5 7]; fec2 = [0 1/3 1/2 2/3];fecs = zeros(size(save_bs_fec));for k = 2:4fecs = fecs + fec2(k)*(save_bs_fec == fec1(k));endsave_bs_fec = fecs;if ~exist(savedir,'dir'),mkdir(savedir);endsave([savedir,'/',filename],'save_user_ActiveCnt','save_user_distance','save_user_mobID','save_u ser_velocity',...'save_user_sinr','save_bs_sinr',...'save_bs_mod','save_bs_fec','save_bs_dist','save_bs_poweradjust','save_bs_FrminErr','save_bs_ mobID',...'save_outageCnt','save_totalBitsSent','save_user_fair');End% load the data file for each testing case% output is the BLER, Total UEs and Dropped UEs,% the served UE number can be found by total UEs - Dropped UEsfunction [result,fileidx] = res_bler_NoUEOUT(test_resource_allocation_idx,UE,MIMO,loaddir,result,fileidx,Comm_conf) filename = ['RA',num2str(test_resource_allocation_idx),'_UE',num2str(UE),'_FLA',num2str(Comm_conf.F_LA ),'_FPA',num2str(Comm_conf.F_PA),MIMO,'_trms',num2str(Comm_conf.t_rms),'f',num2str(Com m_conf.fd),'_s',num2str(Comm_conf.state),'N',num2str(Comm_conf.N),'subN',num2str(Comm_co nf.subN),'_E',num2str(Comm_conf.flg_csi_err),'c',num2str(Comm_conf.flg_offset),'D',num2str(Co mm_conf.DELAY),'BO',num2str(Comm_conf.BO_dB),'HPA',num2str(Comm_e_HPA_flg),'_B LER',num2str(Comm_conf.targetFER),'.mat'];load([loaddir,'/',filename],'save_outageCnt','save_user_mobID','save_bs_FrminErr','save_bs_mod ');fileidx = fileidx + 1result.bler(fileidx)=sum(sum(save_bs_FrminErr))/sum(sum(save_bs_mod~=0));erPersecond(fileidx) = double(max(max(save_user_mobID)))/(double(size(save_user_mobID,2))*5e-4);result.outagePersecond(fileidx) = double(save_outageCnt)/(size(save_user_mobID,2)*5e-4);% the power utilization figure% generates two figures% figure 1: distance vs. utilized power (per block)% figure 2: CDF of utilized power (for each OFDM frame)function [result,fileidx] = res_bs_powerad(test_resource_allocation_idx,UE,MIMO,loaddir,result,fileidx,av_factor,Comm_c onf)filename = ['RA',num2str(test_resource_allocation_idx),'_UE',num2str(UE),'_FLA',num2str(Comm_conf.F_LA ),'_FPA',num2str(Comm_conf.F_PA),MIMO,'_trms',num2str(Comm_conf.t_rms),'f',num2str(Com m_conf.fd),'_s',num2str(Comm_conf.state),'N',num2str(Comm_conf.N),'subN',num2str(Comm_co nf.subN),'_E',num2str(Comm_conf.flg_csi_err),'c',num2str(Comm_conf.flg_offset),'D',num2str(Co mm_conf.DELAY),'BO',num2str(Comm_conf.BO_dB),'HPA',num2str(Comm_e_HPA_flg),'_B LER',num2str(Comm_conf.targetFER),'.mat'];load([loaddir,'/',filename],'save_bs_poweradjust','save_bs_dist');colors = {[0.5 0.5 0.5],[0 0 0],[0 0.5 1],[0 0 1],[1 0 0.5],[1 0 0]};lst = {'-','-.','-','-.','-','-.'};RAs = {'RR','PF','MX','PF2'};para.RA = RAs{test_resource_allocation_idx};UEs = [4 10];para.UE = UE;para.ra_ix = test_resource_allocation_idx;if Comm_conf.F_LA == 2 && Comm_conf.F_PA == 2,para.ra_ix = 4;endif MIMO == 2,para.ra_ix = 5;endpara.ue_ix = find(UEs == para.UE);para.nuSymbol = 6;para.subN = Comm_conf.subN;para.Tfrm = 5e-4;fileidx = fileidx + 1;%%result.ra_idx(fileidx) = test_resource_allocation_idx;%%fig_ix = 0;dist = reshape(save_bs_dist,[],1);[dist_sort,idx] = sort(dist);tmpV = save_bs_poweradjust;yy=reshape(tmpV,[],1);yy_sort = yy(idx);fig_ix = fig_ix + 1;cfigure(fig_ix);plot(average2(double(dist_sort),av_factor),10*log10(average2(double(yy_sort),av_factor)),'color' ,colors{fileidx},'linestyle',lst{fileidx},'linewidth',2);hold on;result.LGD{fileidx} = [para.RA,',UE',num2str(para.UE),',F',num2str(Comm_conf.F_LA),'P',num2str(Comm_conf.F_PA),',', MIMO];result.figname{fig_ix}='bs_powerad_vs_dist';xlabel('Distance in meter','FontSize',14,'fontname','times','FontWeight','b');ylabel('Utilized Power per Block in dB','FontSize',14,'fontname','times','FontWeight','b');fig_ix = fig_ix + 1;cfigure(fig_ix);yy=mean(tmpV,1);mns = sprintf('%3.2f',10*log10(mean(yy)));result.LGDmn{fileidx} = [para.RA,',UE',num2str(para.UE),',F',num2str(Comm_conf.F_LA),'P',num2str(Comm_conf.F_PA),',', MIMO,',M:',mns];handCDF = cdfplot(10*log10(double(yy)));hold on;set(handCDF,'color',colors{fileidx},'linestyle',lst{fileidx},'linewidth',2);result.figname{fig_ix}='CDF_of_bs_powerad';xlabel('Averaged Utilized Power at NB in dB','FontSize',14,'fontname','times','FontWeight','b'); ylabel('CDF of Utilized Power','FontSize',14,'fontname','times','FontWeight','b');% two figures for the SINR at Base Station% figure 1: distance vs. SINR (per block)% figure 2: CDF of SINR (per block)function [result,fileidx] = res_bs_sinr(test_resource_allocation_idx,UE,MIMO,loaddir,result,fileidx,av_factor,Comm_conf) filename = ['RA',num2str(test_resource_allocation_idx),'_UE',num2str(UE),'_FLA',num2str(Comm_conf.F_LA ),'_FPA',num2str(Comm_conf.F_PA),MIMO,'_trms',num2str(Comm_conf.t_rms),'f',num2str(Com m_conf.fd),'_s',num2str(Comm_conf.state),'N',num2str(Comm_conf.N),'subN',num2str(Comm_co nf.subN),'_E',num2str(Comm_conf.flg_csi_err),'c',num2str(Comm_conf.flg_offset),'D',num2str(Co mm_conf.DELAY),'BO',num2str(Comm_conf.BO_dB),'HPA',num2str(Comm_e_HPA_flg),'_B LER',num2str(Comm_conf.targetFER),'.mat'];load([loaddir,'/',filename],'save_bs_sinr','save_bs_dist');colors = {[0.5 0.5 0.5],[0 0 0],[0 0.5 1],[0 0 1],[1 0 0.5],[1 0 0]};lst = {'-','-.','-','-.','-','-.'};RAs = {'RR','PF','MX','PF2'};para.RA = RAs{test_resource_allocation_idx};UEs = [4 10];para.UE = UE;para.ra_ix = test_resource_allocation_idx;if Comm_conf.F_LA == 2 && Comm_conf.F_PA == 2,para.ra_ix = 4;endif MIMO == 2,para.ra_ix = 5;endpara.ue_ix = find(UEs == para.UE);para.nuSymbol = 6;para.subN = Comm_conf.subN;para.Tfrm = 5e-4;fileidx = fileidx + 1;%%result.ra_idx(fileidx) = test_resource_allocation_idx;result.LGD{fileidx} = [para.RA,',UE',num2str(para.UE),',F',num2str(Comm_conf.F_LA),'P',num2str(Comm_conf.F_PA),',', MIMO];%%fig_ix = 0;dist = reshape(save_bs_dist,[],1);[dist_sort,idx] = sort(dist);tmpV = save_bs_sinr;yy=reshape(tmpV,[],1);yy_sort = yy(idx);fig_ix = fig_ix + 1;cfigure(fig_ix);plot(average2(double(dist_sort),av_factor),average3(double(yy_sort),av_factor),'color',colors{filei dx},'linestyle',lst{fileidx},'linewidth',2);hold on;result.figname{fig_ix}='bs_sinr_vs_dist';xlabel('Distance in Meter','FontSize',14,'fontname','times','FontWeight','b');ylabel('Averaged per Block SINR at NB','FontSize',14,'fontname','times','FontWeight','b');fig_ix = fig_ix + 1;cfigure(fig_ix);handCDF = cdfplot(double(yy));hold on;set(handCDF,'color',colors{fileidx},'linestyle',lst{fileidx},'linewidth',2);result.figname{fig_ix}='CDF_of_bs_sinr';xlabel('SINR per Block at NB in dB','FontSize',14,'fontname','times','FontWeight','b');ylabel('CDF of SINR','FontSize',14,'fontname','times','FontWeight','b');% CDF of instantaneous cell throughput% calculated by B * R * * 6 * 12 (~Err) / T;function [result,fileidx] = res_cdf_instTP(test_resource_allocation_idx,UE,MIMO,loaddir,result,fileidx,av_factor,Comm_con f)filename = ['RA',num2str(test_resource_allocation_idx),'_UE',num2str(UE),'_FLA',num2str(Comm_conf.F_LA ),'_FPA',num2str(Comm_conf.F_PA),MIMO,'_trms',num2str(Comm_conf.t_rms),'f',num2str(Com m_conf.fd),'_s',num2str(Comm_conf.state),'N',num2str(Comm_conf.N),'subN',num2str(Comm_co nf.subN),'_E',num2str(Comm_conf.flg_csi_err),'c',num2str(Comm_conf.flg_offset),'D',num2str(Co mm_conf.DELAY),'BO',num2str(Comm_conf.BO_dB),'HPA',num2str(Comm_e_HPA_flg),'_B LER',num2str(Comm_conf.targetFER),'.mat'];load([loaddir,'/',filename],'save_bs_mod','save_bs_fec','save_bs_FrminErr');colors = {[0.5 0.5 0.5],[0 0 0],[0 0.5 1],[0 0 1],[1 0 0.5],[1 0 0]};lst = {'-','-.','-','-.','-','-.'};RAs = {'RR','PF','MX','PF2'};para.RA = RAs{test_resource_allocation_idx};UEs = [4 10];para.UE = UE;para.ra_ix = test_resource_allocation_idx;if Comm_conf.F_LA == 2 && Comm_conf.F_PA == 2,para.ra_ix = 4;endif MIMO == 2,para.ra_ix = 5;endpara.ue_ix = find(UEs == para.UE);para.nuSymbol = 6;para.subN = 12;para.Tfrm = 5e-4;save_bs_instTP = 1e-6 * sum(double(save_bs_mod) .* save_bs_fec .* double(~save_bs_FrminErr),1) * para.nuSymbol * para.subN / 5e-4;mns = sprintf('%3.2f',mean(save_bs_instTP));fileidx = fileidx + 1;%%result.ra_idx(fileidx) = test_resource_allocation_idx;result.LGD{fileidx} = [para.RA,',UE',num2str(para.UE),',F',num2str(Comm_conf.F_LA),'P',num2str(Comm_conf.F_PA),',', MIMO];result.LGDmn{fileidx} =[para.RA,',UE',num2str(para.UE),',F',num2str(Comm_conf.F_LA),'P',num2str(Comm_conf.F_PA),',', MIMO,',M:',mns];%%cfigure;handCDF = cdfplot(save_bs_instTP);hold on;set(handCDF,'color',colors{fileidx},'linestyle',lst{fileidx},'linewidth',2);result.figname='CDF_of_bs_instTP';xlabel('Instantaneous Cell Throughput in Mbps','FontSize',14,'fontname','times','FontWeight','b'); ylabel('CDF of Instantaneous Cell Throughput','FontSize',14,'fontname','times','FontWeight','b');。