📄 ace1.m
字号:
clear all; clc; close all;
K = 256;
V = 4;
QPSK_Set = [1+j -1+j 1-j -1-j];
MAX_SYMBOLS = 1e5;
PAPR_Orignal = zeros(1,MAX_SYMBOLS);
PAPR_ACE = zeros(1,MAX_SYMBOLS);
PAPR_ACENEW=zeros(1,MAX_SYMBOLS);
samplerate=1;
test=zeros(1,MAX_SYMBOLS);
testACE1per=zeros(1,MAX_SYMBOLS);
testACE2per=zeros(1,MAX_SYMBOLS);
indexACE=ones(1,MAX_SYMBOLS);
testPAPR_temp=zeros(1,MAX_SYMBOLS);
count=zeros(1,MAX_SYMBOLS);
for nSymbol=1:MAX_SYMBOLS
Index = randint(1,K,length(QPSK_Set))+1;
X = QPSK_Set(Index(1,:));
Xsam=UtraSample(X,samplerate);
x = ifft(Xsam,K*samplerate);
Signal_Power = abs(x.^2);
Peak_Power = max(Signal_Power);
Mean_Power = mean(Signal_Power);
PAPR_Orignal(nSymbol) = 10*log10(Peak_Power./Mean_Power);
% ACE
A=X;
Asam=Xsam;
aa(1,:)=x;
testMean_Power=Mean_Power;
testPeak_Power=Peak_Power;
while ((indexACE(nSymbol)==1)) %indexACE用来标志是否上一次循环使用了限幅
count(nSymbol)=count(nSymbol)+1;
ARV=10*log10(testMean_Power)+6;
amean=sqrt((10^(ARV/10)));
[indexACE(nSymbol) aar]=ARMFORACE(aa(1,:),amean);
A2=fft(aar, K*samplerate);
AA2=ACEDecision(A2,Asam);
testACE1=0;
for qq=1:length(AA2) %统计星座图扩展百分比
if (AA2(qq)==Asam(qq))
testACE1=testACE1+1;
end
end
aa(1,:)=ifft(AA2,K*samplerate);
Signal_Power = abs(aa(1,:).^2);
testPeak_Power = max(Signal_Power);
testMean_Power = mean(Signal_Power);
testPAPR_temp(nSymbol) = 10*log10(testPeak_Power./testMean_Power);
if(testPAPR_temp(nSymbol)<=9)
break;
end
end
testACE1per(nSymbol)=100-testACE1/256*100;
Signal_Power = abs(aa.^2);
Peak_Power = max(Signal_Power);
Mean_Power = mean(Signal_Power);
PAPR_temp = 10*log10(Peak_Power./Mean_Power);
PAPR_ACE(nSymbol) = PAPR_temp(1);
end
Q=real(A2); %display the constellation
I=imag(A2);
plot(I,Q,'x');
Q=real(AA2);
I=imag(AA2);
figure;
plot(I,Q,'x');
[cdf1, PAPR1] = ecdf(PAPR_Orignal);
[cdf2, PAPR2] = ecdf(PAPR_ACE);
figure;
semilogy(PAPR1,1-cdf1,'--b',PAPR2,1-cdf2,'-or')
legend('Orignal','ACE', 'ACENEW')
title('ACE reduction')
xlabel('PAPR0 [dB]');
ylabel('CCDF (Pr[PAPR>PAPR0])');
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -