1.算法仿真效果
matlab2022a仿真结果如下:
2.算法涉及理论知识概要
正交频分复用(orthogonal frequency-division multiplexing, OFDM) 技术是一种多载波数字调制技术,它具有抗多径能力强,频谱利用率高等优点,与其他技术结合在一起应用到第四代移动通信中。但OFDM 技术的缺点是对定时同步误差和频率偏差非常敏感。定时偏差会造成相位的旋转,而频率偏移会使OFDM 各子载波间正交性遭到破坏,系统性能急剧恶化。因此准确地时频同步对提升OFDM 系统的整体性能起到非常关键的作用。
正交频分复用(OFDM)技术的概念最早出现于20世纪50年代中期。当时由于使用模拟滤波器实现的系统,复杂度较高,因此一直没有真真正正发展起来。到了60年代,人们开始对多载波调制(MCM)技术进行了许多理论上的研究,形成了并行数据传输以及频分复用(FDM)的思想,这些思想使得OFDM技术最先在美国军用高频通信系统得到应用。Weinstem和Ebert于1971年建议使用离散傅立叶逆变换(IDFT)以及离散傅立叶变换(DFT)来实现基带的调制和解调,这样就大大降低了多载波系统的复杂度。Saltzberg对OFDM进行了性能分析,并得出以下结论:在OFDM中主要限制就是信道的干扰。为了对抗信道间干扰(ICI)和符号间干扰(ISI),Peled和Ruiz引入了循环前缀(CP,Cyclic Prefix)的概念,其中不是使用空的保护空间,而是使用OFDM码元的周期扩展,只要循环前缀大于信道的最大多径时延扩展,就可以有效地模拟实现周期卷积的信道。但是,使用CP的代价是要丧失部分信号能量,这些能量与CP的长度成正比,然而使用CP所获得的好处通常要远大于信号能量损失。正交频分复用(OFDM)是一种特殊的多载波调制方式,它的基本思想是将高速传输的数据流通过串/并变换,变成在若干个正交的窄带子信道上并行传输的低速数据流。OFDM技术将传送的数据信息分散到各个子载波上,从而大大增加了每个符号的持续时间,使得符号周期大于多径时延,因此可以减轻由无线信道的多径时延扩展所产生的时间弥散性对系统所造成的影响。并且还可以在OFDM符号之间插入保护间隔,令保护间隔大于无线信道的最大时延扩展,这样就可以最大限度地消除由于多径而带来的符号间干扰(ISI)。而且一般都采用循环前缀作为保护间隔,从而可以避免由多径而带来的信道间干扰(ICI)。OFDM技术利用信号的时频正交性,允许子信道频谱有部分重叠,使得频谱利用率提高近一倍,因而具有非常高的频谱利用率。
OFDM系统框图如图所示。
PAPR抑制
峰值平均功率比(PAPR—Peak to Average Power Ratio),简称峰均比(PAPR)。MIMO-OFDM系统能够提供更大的覆盖范围、更好的传输质量、更高的数据速率和频谱效率。然而,由于OFDM 符号是由多个独立经过调制的子载波信号叠加而成的,当各个子载波相位相同或者相近时,叠加信号便会受到相同初始相位信号的调制,从而产生较大的瞬时功率峰值,由此进一步带来较高的峰值平均功率比(PAPR—Peak to Average Power Ratio),简称峰均比(PAPR)。由于一般的功率放大器的动态范围都是有限的,所以峰均比较大的MIMO-OFDM信号极易进入功率放大器的非线性区域,导致信号产生非线性失真,造成明显的频谱扩展干扰以及带内信号畸变,导致整个系统性能严重下降。高峰均比已成为MIMO-OFDM 的一个主要技术阻碍。
OFDMA
OFDMA,全称为Orthogonal Frequency Division Multiple Access,是指正交频分多址 。
OFDMA是OFDM技术的演进,将OFDM和FDMA技术结合。在利用OFDM对信道进行副载波化后,在部分子载波上加载传输数据的传输技术。OFDM是一种调制方式;OFDMA是一种多址接入技术,用户通过OFDMA共享频带资源,接入系统。OFDMA又分为子信道(Subchannel)OFDMA和跳频OFDMA。
3.MATLAB核心程序
clear;
close all;
warning off;
addpath(genpath(pwd));
N = 256;
Nd = 64;
VV = [4 6 8 10];
snrs = 0:0.5:12;
dBcs = snrs+(snrs(2)-snrs(1))/2;
Nblk = 5000;
for i=1:length(VV);
i
b = VV(i);
M = 2^b;
%OFDMA
CCDF_OFDMa = PAPR_func('OF',N,b,N,dBcs,Nblk);
%LFDMA
CCDF_LFDMa = PAPR_func('LF',Nd,b,N,dBcs,Nblk);
%IFDMA
CCDF_IFDMa = PAPR_func('IF',Nd,b,N,dBcs,Nblk);
subplot(2,2,i)
semilogy(snrs,CCDF_OFDMa,'b-o', snrs,CCDF_LFDMa,'m-<', snrs,CCDF_IFDMa,'r-*')
legend('OFDMA','LFDMA','IFDMA')
axis([snrs([1 end]) 1e-3 1]);
grid on;
title([num2str(M) '-QAM']);
xlabel(['PAPR_0[dB]']);
ylabel('Pr(PAPR>PAPR_0)');
end