m扩展索引OFDM(Spread-OFDM-IM)matlab仿真,信号检测对比ZF,MMSE,ML等方法

简介: m扩展索引OFDM(Spread-OFDM-IM)matlab仿真,信号检测对比ZF,MMSE,ML等方法

1.算法仿真效果
matlab2022a仿真结果如下:

a539b3ff10efd8a178e44a088a88304c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg
53f419c58acbf513d2f2c8b6169c2e55_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg
5719d4a36ceaf87e0b9f55027119c9e9_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.jpg

2.算法涉及理论知识概要
基于索引调制的OFDM(OFDM-IM,OFDM with Index Modulation)技术被提出,在频率选择性衰落信道上提升了系统的分集增益,特别是在较低频谱效率场景下能够有效降低系统的误比特率。在OFDM-IM方法中,特殊的索引信息传输方式以及索引结构的设计对分集增益的提高,引发了广泛的关注。如何通过索引结构的设计,取得比OFDM更低的误比特率以及更高的频谱效率成为了索引调制OFDM研究方向上的热点。

    主要研究工作内容如下:

(1)针对OFDM中索引调制技术存在频谱效率较低的问题,本文提出了OFDM联合子块索引调制技术(OFDM-JS-IM,OFDM with Joint Subblock Index Modulation),将索引映射中被丢弃部分索引组合,在联合子块空间中进行了重复利用。仿真验证及理论分析表明,OFDM-JS-IM方法能够以轻微的误比特率性能损失为代价,有效提高OFDM-IM的频谱效率。

(2)针对索引结构与分集性能的关系进行了分析。由于OFDM-IM的特殊结构,索引比特的分集阶数高于一般的符号比特,使得OFDM-IM性能优于OFDM。然而,OFDM中的索引调制结构也仅仅能将部分比特的分集阶数提高至2。本文提出了OFDM全索引方法(OFDM with All Index Modulation,OFDM-AIM),不再使用低分集阶数的符号比特传输信息,而将所有信息以索引比特的方式传输,并提出了提高子块分集阶数的搜索算法,能够构建具有高分集阶数的合法子块集合。仿真结果表明,该方法能够有效提升系统的分集增益。

(3)基于上述OFDM-AIM技术,本文还提出了可变子块长度的子块设计辅助的OFDM-AIM。由于OFDM-AIM中子块长度决定了系统的最高分集阶数,因此可以适当提高子块长度以寻找更多较高分集阶数的子块,以提高分集增益。根据系统的频谱效率和计算复杂度要求,该方法能通过变化子块长度在实际应用中达到更好的性能权衡。

(4)分集阶数只是评价发射端信号的特性,而系统的误比特率性能不仅与分集阶数有关,还与不同子块符号间的欧式距离以及信道特性有关。针对该问题,本文将启发式算法中的遗传算法用于搜索具有最低误比特率的子块查找表。

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

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

1661eee30e8080eec832102264c43de4_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

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

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

3.MATLAB核心程序
```for ij = 1:length(SNRs)
error0 = zeros(1,iter);
for ij2 = 1:iter
[ij,ij2]% 生成随机比特序列
bit1 = randi([0 1],1,(p1+p2)N_frames);
bit2 = reshape(bit1.',p1+p2,N_frames).';
info_bit = bit2(:,p1+1:end);
sym = [];
x = 1;
for i=1:K% 解调信息比特
y=bps
i;
info_bit_temp = info_bit(:,x:y);
x = y+1;
info_dec_temp = bi2de(info_bit_temp);
info_dec_mod = pskmod(info_dec_temp,M,pi./M,'gray');

        sym(:,i)      = info_dec_mod;
    end        
    index_bit = bit2(:,1:p1);
    index_sym = func_Bin2Dec(index_bit);
    sym_norm  = sym.*(1./abs(sym));

    sym_tx  = sym_norm.*sqrt(PW_subcarrier);
    tx_sym1 = zeros(N,N_frames);
    for kk = 1:N_frames            % 将数据符号映射到传输符号
        kk_index = index_sym(kk)+1;            
        indices = index_all(kk_index,:)+1;
        tx_sym1(indices,kk) = sym_tx(kk,:);
    end   

    tx_sym=zeros(size(tx_sym1));
    for k=1:N_frames
        tx_sym(:,k)=sc*tx_sym1(:,k);
    end       

    eps      = 1./(1+mmse*SNRs2(ij));
    h        = 1/sqrt(2)*(randn(size(tx_sym))+1i*randn(size(tx_sym)))*sqrt(1-eps);                     
    y        = awgn(h.*tx_sym,SNRs(ij),'measured');

    SNR_sqrt = sqrt(SNRs2(ij)); 

    %OFDM检测
    sym_detect = zeros(1,N_frames);
    bit_detect = zeros(N_frames,K);
    ref_detect = zeros(N_frames,K);

    for jj=1:N_frames
        %% ML检测
        [BB,MM]          = func_ML_Spread_IM(SNR_sqrt,M,K,p1,PW_subcarrier,index_all,y,h,N,jj,sc,Ref_ML_sym0,Ref_ML_sym);
        sym_detect(jj)   = BB-1;
        ref_detect(jj,:) = MM;
    end


    index_bit_de = func_dec2bin(sym_detect,p1);
    index_bit_err= sum(sum(index_bit~=index_bit_de));

    info_de_re   = pskdemod(ref_detect,M,pi./M,'gray');

    info_bit_re  = zeros(N_frames,K*bps);
    for kk=1:K
        info_bit_re(:,(kk-1)*bps+1:kk*bps)=de2bi(info_de_re(:,kk),bps);
    end
    info_bit_err=sum(sum(info_bit~=info_bit_re));

    error0(ij2)=(info_bit_err+index_bit_err)./((p1+p2)*N_frames);
end    

BER0(ij)= sum(error0)./iter;

end

% 绘制误码率曲线
figure
semilogy(SNRs,BER0,'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
grid on
xlabel('SNR')
ylabel('ber')
```

相关文章
|
17天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
33 4
|
4天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
50 31
|
17天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
基于粒子滤波器的电池剩余使用寿命计算matlab仿真
本研究基于粒子滤波器预测电池剩余使用寿命(RUL),采用MATLAB2022a实现。通过非线性动力学模型模拟电池老化过程,利用粒子滤波器处理非线性和非高斯问题,准确估计电池SOH变化趋势,进而预测RUL。系统仿真结果显示了良好的预测性能。
|
4天前
|
算法
基于Adaboost模型的数据预测和分类matlab仿真
AdaBoost(Adaptive Boosting)是一种由Yoav Freund和Robert Schapire于1995年提出的集成学习方法,旨在通过迭代训练多个弱分类器并赋予分类效果好的弱分类器更高权重,最终构建一个强分类器。该方法通过逐步调整样本权重,使算法更关注前一轮中被误分类的样本,从而逐步优化模型。示例代码在MATLAB 2022A版本中运行,展示了随着弱分类器数量增加,分类错误率的变化及测试数据的分类结果。
|
23天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
3天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
13天前
|
机器学习/深度学习 算法 Python
基于BP神经网络的金融序列预测matlab仿真
本项目基于BP神经网络实现金融序列预测,使用MATLAB2022A版本进行开发与测试。通过构建多层前馈神经网络模型,利用历史金融数据训练模型,实现对未来金融时间序列如股票价格、汇率等的预测,并展示了预测误差及训练曲线。
|
14天前
|
算法
超市火灾烟雾蔓延及人员疏散的matlab模拟仿真,带GUI界面
本项目基于MATLAB2022A开发,模拟了大型商业建筑中火灾发生后的人员疏散与烟雾扩散情况。算法通过设定引导点指导人员疏散,考虑视野范围、随机运动及多细胞竞争同一格点的情况。人员疏散时,根据是否处于烟雾区调整运动策略和速度,初始疏散采用正态分布启动。烟雾扩散模型基于流体方程,考虑了无风环境下的简化。
|
11天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。

热门文章

最新文章