⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ofdslmsimulation.m

📁 这个程序是用SLM算法抑制峰均功率比的matlab仿真程序
💻 M
字号:

%

clear all; clc; close all;
K = 128;                                                                
U = 16;
samplerate=4;                                           
QPSK_Set  = [1 -1 j -j];
Phase_Set = [1 -1 j -j ];
MAX_SYMBOLS  = 1e5;
PAPR_Orignal = zeros(1,MAX_SYMBOLS);
PAPR_SLM_2    = zeros(1,MAX_SYMBOLS);
PAPR_SLM_4     = zeros(1,MAX_SYMBOLS);
PAPR_SLM_8    = zeros(1,MAX_SYMBOLS);
PAPR_SLM_16 =zeros(1,MAX_SYMBOLS);
X     = zeros(U,K);
Index = zeros(U,K);
for nSymbol=1:MAX_SYMBOLS
    Index(1,:)   = randint(1,K,length(QPSK_Set))+1;
    Index(2:U,:) = randint(U-1,K,length(Phase_Set))+1;
    X(1,:) = QPSK_Set(Index(1,:));                                         
    Phase_Rot = Phase_Set(Index(2:U,:));
    X(2:U,:) = repmat(X(1,:),U-1,1).*Phase_Rot;                          
    Xsam=UtraSample(X,samplerate);
    x = ifft(Xsam,K*samplerate,2);    
    Signal_Power = abs(x.^2);
    Peak_Power   = max(Signal_Power,[],2);
    Mean_Power   = mean(Signal_Power,2);
    PAPR_temp = 10*log10(Peak_Power./Mean_Power);
    PAPR_Orignal(nSymbol) = PAPR_temp(1);
    PAPR_SLM_2(nSymbol)     = min(PAPR_temp(1:2,:));
    PAPR_SLM_4(nSymbol)     = min(PAPR_temp(1:4,:));
    PAPR_SLM_8(nSymbol)     = min(PAPR_temp(1:8,:));
    PAPR_SLM_16 (nSymbol)    =min(PAPR_temp(1:16,:));
end
[cdf1, PAPR1] = ecdf(PAPR_Orignal);
[cdf2, PAPR2] = ecdf(PAPR_SLM_2);
[cdf3, PAPR3] = ecdf(PAPR_SLM_4);
[cdf4, PAPR4] = ecdf(PAPR_SLM_8);
[cdf5, PAPR5] = ecdf(PAPR_SLM_16);
xx = 0:.02:12;
n = K*1;
yy = zeros(length(n),length(xx));
for jj=1:length(n)
    for ii=1:length(xx)
        yy(ii,jj) = 1-(1-exp(-10.^(xx(ii)/10)))^(2.8*n(jj));
    end
end
PAPR1s=zeros(1,uint16(length(PAPR1)/10+1));
cdf1ss=zeros(1,uint16(length(PAPR1)/10+1));
for qq=1:uint16(length(PAPR1))
    PAPR1s(uint16(qq/10+1))=PAPR1(qq);
    cdf1s(uint16(qq/10+1))=cdf1(qq);
end
xxs=zeros(1,uint16(length(xx)/10));yys=zeros(1,uint16(length(xx)/10));
for qq=1:uint16(length(xx))
   xxs(uint16(qq/10+1))=xx(qq);
    yys(uint16(qq/10+1))=yy(qq);
end
semilogy(PAPR1s,1-cdf1s,'*-b',PAPR2,1-cdf2,'--r',PAPR3,1-cdf3,'--c',PAPR4,1-cdf4,'--k',PAPR5,1-cdf5,'--m',xxs, yys, 'o-g')
legend('Orignal','U=2','U=4','U=8', 'U=16','Theoritical',3)
title('SLM METHOD FOR PAPR REDUCTION')
xlabel('PAPR0 [dB]');
ylabel('CCDF (Pr[PAPR>PAPR0])');
hold on;
grid on

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -