clear all; clc; close all;
K = 256;
N = 4;
QPSK_Set = [1 -1 j -j];
Phase_Set = [1 -1];
MAX_SYMBOLS=500;
PAPR_Orignal = zeros(1,MAX_SYMBOLS);
PAPR_SLM= zeros(1,MAX_SYMBOLS);
X= zeros(N,K);
Index = zeros(N,K);
for nSymbol=1:MAX_SYMBOLS
Index(1,:) = randint(1,K,length(QPSK_Set))+1;
Index(2:N,:) = randint(N-1,K,length(Phase_Set))+1;
X(1,:) = QPSK_Set(Index(1,:));
Phase_Rot = Phase_Set(Index(2:N,:));
X(2:N,:) = repmat(X(1,:),N-1,1).*Phase_Rot;
x = ifft(X,[],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(nSymbol) = min(PAPR_temp);
end
d0=zeros(1,12*2+1);
d1=zeros(1,12*2+1);
m=1;
for papr0=0:0.5:12
for nSymbol=1:MAX_SYMBOLS
if PAPR_Orignal(nSymbol)>papr0
d0(m)=d0(m)+1;
end
if PAPR_SLM(nSymbol)>papr0
d1(m)=d1(m)+1;
end
end
m=m+1;
end
d0=d0/MAX_SYMBOLS;
d1=d1/MAX_SYMBOLS;
papr0=0:0.5:12;
hold on;
semilogy(papr0,d0,'-bo',papr0,d1,'-r<');
legend('Orignal','SLM')
title('N=4')
xlabel('PAPR0 [dB]');
ylabel('CCDF (Pr[PAPR>PAPR0])');
xlim([0 12]);
grid on;
%--------------------------------------------------------------------------
评论1