您现在的位置:首页 >> 通信 >> 内容

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

时间:2023/8/14 13:47:40 点击:

  核心提示:0X_019m,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJybmZlv

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

  基于索引调制的OFDM(OFDM-IM,OFDM with Index Modulation)技术被提出,在频率选择性衰落信道上提升了系统的分集增益,特别是在较低频谱效率场景下能够有效降低系统的误比特率。在OFDM-IM方法中,特殊的索引信息传输方式以及索引结构的设计对分集增益的提高,引发了广泛的关注。

4.部分源码

.....................................................................

 

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')

0X_019m

---

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168