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

📄 ace1.m

📁 这个程序是用星座图扩展法抑制峰均功率比的matlab仿真程序
💻 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 + -