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

索引OFDM调制解调系统的matlab性能仿真

时间:2024/9/25 6:03:08 点击:

  核心提示:0sj_016m,包括程序操作录像+说明文档+参考文献...

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

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

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

点击店铺

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

2.部分仿真图预览


3.算法概述

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

4.部分源码

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

%子载波数量

Nsub         = 2048;  

%子块

G            = 16;  %2个子载波作为一个块

Phase_Set    = [1 -1];

Nlength      = 50000;%数据长度

PAPR_SLM     = zeros(3,Nlength);

BPSK         =  1;%BPSK调制

X            = zeros(1,Nsub);

for ij=1:Nlength%开始循环仿真

    ij

    %产生数据bit信息

    bitsource    = rand(1,Nsub)>=0.5;

    %产生索引比特

    index        = rand(1,Nsub)>=0.5;

    

    %调制,在调制过程中加入单个索引的调制方式

    X0           = modulation(bitsource,BPSK);    

    X            = reshape(X0,[G,Nsub/G]);

    Xindex       = reshape(index,[G,Nsub/G]);

    

    X2           = zeros(G,2*Nsub/G);

    for i=1:G

        %选择前面4个作为索引比特

        IMtable  = Xindex(i,:);

        S        = X(i,:);

        for j = 1:length(S)

            if IMtable(j) == 1

               X2(i,2*j-1) = S(j);

               X2(i,2*j)   = 0;

            else

               X2(i,2*j-1) = 0;

               X2(i,2*j)   = S(j);

            end

        end

    end

 

    X3           = reshape(X2',[1,2*Nsub]);

    %IFFT

    x            = ifft(X3,[],2);       

    %计算PAPR

    Signal_Power = abs(x.^2);

 

    %PTS

    K = 128;                                                                    % SIZE OF FFT 

    V = 4;       

    Choose_Len=16;

    A = zeros(V,K);

    Choose = [1 1 1 1; 1 1 1 2; 1 1 2 1; 1 2 1 1; 2 1 1 1;

          1 1 2 2; 1 2 1 2; 1 2 2 1; 2 2 1 1; 2 1 2 1; 2 1 1 2;

          2 2 2 1; 2 2 1 2; 2 1 2 2; 1 2 2 2; 2 2 2 2];

    for v=1:V

        A(v,v:V:K) = X(v:V:K);

    end

    a = ifft(A,[],2);                                                       %行变化,默认为列变化

    

    min_value = 10;

    for n=1:Choose_Len

        temp_phase = Phase_Set(Choose(n,:)).';

        temp_max = max(abs(sum(a.*repmat(temp_phase,1,K))));

        if temp_max<min_value

            min_value = temp_max;

            Best_n = n;

        end

    end

    aa = sum(a.*repmat(Phase_Set(Choose(Best_n,:)).',1,K));

        

    Signal_Power = abs(aa.^2);

    Peak_Power   = max(Signal_Power,[],2);

    Mean_Power   = mean(Signal_Power,2);

    PAPR_Orignal(ij) = 10*log10(Peak_Power./Mean_Power);

    

end

[cdf1, PAPR1] = ecdf(PAPR_Orignal);

%显示PAPR

figure;

semilogy(PAPR1,1-cdf1)

xlabel('PAPR0 [dB]');

ylabel('CCDF (Pr[PAPR>PAPR0])');

grid on

save R1imPTS.mat PAPR1 cdf1

0sj_016m

---

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