clear all;close all;
%% SLM 方法的CCDF
c1=128;
n1=1000;
Fs=100;
NN=1:.1:10;%CCDF的门限值
ccdf0=zeros(1,91);
ccdf1=zeros(4,91);
for i=1:n1
x(:,1)=randsrc(c1,1,[+1 -1]);%QPSK
x(:,2)=randsrc(c1,1,[+1 -1]);
y1=squeeze(x);
a=amodce(y1,Fs,'qam'); %qpsk modulated information
y2=a.';
z1=[y2(1:c1/2),zeros(1,3*c1),y2(c1/2+1:c1)];
w1=ifft(z1);
w1=w1*c1;
x1=(abs(w1)).^2;
m1=mean(x1);
v1=max(x1);
papr0(i)=10*log10(v1/m1);
for l=1:91;
if papr0(i)>NN(l);
ccdf0(l)=ccdf0(l)+1;
end
end
for MM=2:4%可选择的信道数
for k=1:MM;
p=randsrc(1,c1,[+1,-1,+j,-j]);
y3=y2.*p;
z2=[y3(1:c1/2),zeros(1,3*c1),y3(c1/2+1:c1)];
w2=ifft(z2);
w2=w2*c1;
x2=(abs(w2)).^2;
m2=mean(x2);
v2=max(x2);
papr1(MM,k)=10*log10(v2/m2);
end
papr2(MM,i)=min(papr1(MM,1:MM));
for l=1:91;
if papr2(MM,i)>NN(l);
ccdf1(MM,l)=ccdf1(MM,l)+1;
end
end
end
end
ccdf0=ccdf0./n1;
ccdf3=ccdf1./n1;
NN=1:.1:10;
semilogy(NN,ccdf0,'-k');hold on
semilogy(NN,ccdf3(2,:),'--*k');hold on
semilogy(NN,ccdf3(3,:),':*k');hold on
% title('SLM方法的CCDF曲线')
xlabel('PAPR0(dB)'),ylabel('CCDF')
%% CLIPPING 方法的CCDF
% clear all; clc; close all;
K = 128;
IF = 2;
N = K*IF;
CR = 4;
QPSK_Set = [1 -1 j -j];
ITERATE_NUM = 4;
MAX_SYMBOLS = 1e3;
PAPR_Orignal = zeros(1,MAX_SYMBOLS);
PAPR_RCF = zeros(ITERATE_NUM,MAX_SYMBOLS);
for nSymbol=1:MAX_SYMBOLS
Index = randint(1,K,length(QPSK_Set))+1;
X = QPSK_Set(Index(1,:));
XX = [X(1:K/2) zeros(1,N-K) X(K/2+1:K)];
x = ifft(XX,[],2);
Signal_Power = abs(x.^2);
Peak_Power = max(Signal_Power,[],2);
Mean_Power = mean(Signal_Power,2);
PAPR_Orignal(nSymbol) = 10*log10(Peak_Power./Mean_Power);
for nIter=1:ITERATE_NUM
% > Clipping
x_tmp = x(Signal_Power>CR*Mean_Power);
x_tmp = sqrt(CR*Mean_Power)*x_tmp./abs(x_tmp);
x(Signal_Power>CR*Mean_Power) = x_tmp;
% > Filtering
XX = fft(x,[],2);
XX(K/2+(1:N-K)) = zeros(1,N-K);
x = ifft(XX,[],2);
% > PAPR Compute
Signal_Power = abs(x.^2);
Peak_Power = max(Signal_Power,[],2);
Mean_Power = mean(Signal_Power,2);
PAPR_RCF(nIter,nSymbol) = 10*log10(Peak_Power./Mean_Power);
end
end
[cdf1, PAPR1] = ecdf(PAPR_RCF(1,:));
[cdf2, PAPR2] = ecdf(PAPR_RCF(2,:));
l
semilogy(PAPR1,1-cdf1,'--ok',PAPR2,1-cdf2,':ok')
legend('Original','SLM: M=2','SLM: M=3','Clipping:Once','Clipping:Twice')
xlim([1 10])
% title('Comparision of SLM & Clipping')