m索引OFDM调制解调系统的性能仿真分析

发布于:2022-10-17 ⋅ 阅读:(801) ⋅ 点赞:(0)

目录

1.算法概述

2.部分程序

3.算法部分仿真结果图

4.完整程序获取


1.算法概述

       随着无线通信技术的不断发展,人们对下一代移动通信系统提出了越来越高的要求。在这样的时代背景下,具有低峰均比,强频偏对抗能力和高能量效率的索引调制OFDM系统(Orthogonal Frequency Division Multiplexing with Index Modulation,OFDM-IM)逐渐引起学者们的关注。正交频分复用(orthogonalfrequencydivisionmultiplexing,ofdm)技术在第四代移动通信系统中扮演着重要的角色。它子载波之间的正交性使各个子信道所经历的衰落相对平坦,再通过引入循环前缀来降低符号间干扰,具有频谱利用率高、抗多径效应好等特点,并且快速傅里叶变换为其提供了一种简单、低成本的实现方式。

        但是,在高速场景下,子信道间的正交性会受到多普勒频移的破坏而引起载波间干扰,并且ofdm多个子信道信号叠加也会导致较高的峰均比,这些缺点时ofdm不适用于高速场景。而基于索引调制的正交频分复用(ofdm-im)技术将空间调制技术与传统的正交频分复用(ofdm)技术相结合,其思想是不仅激活子载波可以传输调制信号,而且可以传输其静默子载波的位置信息,从而弥补静默子载波不发送数据造成的损失。静默子载波的存在使得多普勒频移所带来的子载波间的干扰降低,使得系统对频偏不敏感。同时,大量静默子载波的存在又降低了整个输出符号的峰均比,这些优点使得索引调制技术成为5g研究热点之一。

       OFDM-IM是一种多载波索引调制技术,其在信号的频域加入了子载波块的功能,将多个子载波组合成一个子载波块,一个子载波块作为一个调制单元。每次发送过程中,只选择子载波块中的一个或者部分子载波进行激活并发送信息,其功能类似于基于频域的空间索引调制随机数。OFDM-IM技术的基本结构如下图所示:

        OFDM-IM技术和传统的OFDM技术不同之处在于其在调制阶段,加入了索引调制步骤,根据索引调制比特信息,通过映射关系表,选择子载波进行激活并发送相应的比特数据,而未被选择的子载波则处于静默状态。这些索引调制比特数据同时补偿未被激活的静默子载波产生的频谱利用率低的问题。而在OFDM-IM接收部分,则通过子载波块的检测模块来恢复出索引信息和数据符号信息。

       如上所示,OFDM-IM调制系统主要有两种调制方式,一种是相邻分块的调制方式(如图1所示),一种是交织调制方式(如图2所示)。从图1和图2可知,基于相邻分块的调制方式,其主要通过子载波以相邻的方式进行分块划分,而基于交织分块的调制方式,其通过在频域上加入一个交织深度为G的等间隔交织器来实现分块划分。

       OFDM-IM索引调制系统相对于传统的OFDM系统而言,其最要区别在于被激活的子载波数量被降低,因此其对子载波数量相对于OFDM系统而言较为稀疏,那么其对频偏更加的不敏感。另外一方面,通过OFDM-IM索引调制技术,则可以在传统OFDM调制系统的基础上加入一个调制域,补偿未被激活的子载波带来的频谱利用率方面的损失,从而起到提高频谱利用率,提升系统误码率性能的需求。

2.部分程序


%子块
G         = 4;  %2个子载波作为一个块
Nlen      = 15000;%数据仿真长度
Ncp       = 8;%插入CP长度
Tdat0     = floor(rand(1,Nlen*Nsub)*2);
%产生索引比特
index     = floor(rand(1,Nlen*Nsub/2)*2);

Tdat      = reshape(Tdat0,[1,Nlen*Nsub]); 
%Modulate,下面几行都是调制
Dat_Qam   = reshape(Tdat,2,Nlen*Nsub/2).';
Dat_Qam2  = bi2de(Dat_Qam,2,'left-msb');
Mod_Table = [-1-i -1+i 1-i 1+i];%
SymQAM    = Mod_Table(Dat_Qam2+1);

XSymQAM   = conj([reshape(SymQAM,[G,length(SymQAM)/G])]');
Xindex    = [reshape(index,[G,length(SymQAM)/G])]';
X2        = zeros(size(Xindex,1),2*size(Xindex,2));


for jj=1:size(Xindex,1)
    %选择前面4个作为索引比特
    IMtable  = Xindex(jj,:);
    S        = XSymQAM(jj,:);
    for j = 1:length(S)
        if IMtable(j) == 1
           X2(jj,2*j-1) = S(j);
           X2(jj,2*j)   = 0;
        else
           X2(jj,2*j-1) = 0;
           X2(jj,2*j)   = S(j);
        end
    end
end
X3 = [reshape(conj(X2'),[1,size(X2,1)*size(X2,2)])];
 
%IFFT变换

dat_ifft0= ifft(X3); 
% %Add cyclic prefix,加入循环间隔
dat_ifft1_cp3= [dat_ifft0(1:Ncp),dat_ifft0];
%上变频
ff           = 5e7;
dat_ifft1_cp3        = dat_ifft1_cp3.*exp(sqrt(-1)*2*pi*ff*([1:length(dat_ifft1_cp3)]));


% Add the AWGN,加入高斯白噪声
%channel,定一个多径信道
H_channel2   = dat_ifft1_cp3;
Ch           = [1 1/16];
H_channel3   = filter(Ch,1,H_channel2);
snr           = SNR + 10*log10(log2(2));
dat_ifft1_cp3 = awgn(H_channel2,snr,'measured');
%下变频
dat_ifft1_cp3 = dat_ifft1_cp3.*exp(-sqrt(-1)*2*pi*ff*[1:length(dat_ifft1_cp3)]);

%remove,删除循环间隔
dat_ifft1_cp3(1:Ncp)=[];
dat_fft1  = fft(dat_ifft1_cp3); 
dat_fft1b = conj([reshape(dat_fft1,[2*G,length(dat_fft1)/G/2])]');

%提取索引位置和数据
IMdatas=[];
IMindxs=[];
for jj=1:size(Xindex,1)
    tmps   = dat_fft1b(jj,:);
    IMdata = [];
    IMindx = [];
    for j = 1:length(tmps)/2 
        data = tmps(2*j-1:2*j);
        if abs(data(1))>=abs(data(2))%01
           IMdata(j) = [data(1)];
           IMindx(j) = [1]; 
        end
        if abs(data(1))<=abs(data(2))%10
           IMdata(j) = [data(2)];
           IMindx(j) = [0]; 
        end
    end
     
    IMdatas(jj,:)=IMdata;
    IMindxs(jj,:)=IMindx;
end
 
%Tdat0     = floor(rand(1,Nlen*Nsub)*2);
IMdatas_rec = reshape(conj(IMdatas'),[1,size(IMdatas,1)*size(IMdatas,2)]);
datarec     = zeros(size(IMdatas_rec));
for ii = 1:length(IMdatas_rec)
    Real = real(IMdatas_rec(ii));
    Imag = imag(IMdatas_rec(ii));
    if Real>0 & Imag>0
       datarec(ii)=3; 
    end
    if Real>0 & Imag<=0
       datarec(ii)=2; 
    end
    if Real<=0 & Imag>0
       datarec(ii)=1; 
    end
    if Real<=0 & Imag<=0
       datarec(ii)=0; 
    end 
end
datarec=datarec';

%index     = floor(rand(1,Nlen*Nsub/2)*2);
index_rec = reshape(IMindxs',[1,size(IMindxs,1)*size(IMindxs,2)]);%解调出索引位置信息 

3.算法部分仿真结果图

 

 

 

 

01_172m

4.完整程序获取

使用版本matlab2022a

解压密码:C+123456

获得方式1:

m索引OFDM调制解调系统的性能仿真分析

获取方式2:

如果下载链接失效,加博主微信,或私信。


网站公告

今日签到

点亮在社区的每一天
去签到