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

📄 slmvspts.m

📁 分别用pts和选择性映射slm的方法变得降低ofdm峰值平均功率比的papr 源程序
💻 M
字号:
% Program 2-4
% slmvspts.m
% Simulation program to realize SLM and PTS to reduct PAPR of OFDM
% programmed by phui
clc;
clear;
close all;
%********************** preparation part ***************************
para=32;    % Number of parallel channel to transmit (points)
fftlen=32;  % FFT length
%papr       % Peak-to-Average Power Ratio
nloop=1000;  % Number of simulation loops


%************************** main loop part **************************
for iii=1:nloop
%************************** Data generation **************************** 
x=rand(1,para)>0.5;
%**************************** BPSK demode ****************************
seldata=x.*2-1;  
%******************************** IFFT ******************************** 
y=ifft(seldata); 
%*********************** Sub-block Partition ***************************
V=2;
seldata20=zeros(1,para/2);
seldata21=[seldata(1:para/2),seldata20];
seldata22=[seldata20,seldata(para/2+1:para)];
%******************* Ifft************************
y21=ifft(seldata21);       %  ifft : built in function
y22=ifft(seldata22);
Vloop=2.^V;
B2=zeros(Vloop,V);
for vvv=1:1:Vloop
      a=rand(1,V);
      B2(vvv,:)=(a<0.25)+j*(a>=0.25).*(a<0.5)-(a>=0.5).*(a<0.75)-j*(a>=0.75);
ypts=B2(vvv,1)*y21+B2(vvv,2)*y22;
mma2(vvv)=max(abs(ypts).^2);
end
[mmioa2,idx2]=min(mma2);
b2=B2(idx2,:);
b2
yptsV2=b2(1)*y21+b2(2)*y22;
 
%*********************** Sub-block Partition ***************************
V=4;
seldata40=zeros(1,para/4);
seldata41=[seldata(1:para/4),seldata40,seldata40,seldata40];
seldata42=[seldata40,seldata(para/4+1:para/2),seldata40,seldata40];
seldata43=[seldata40,seldata40,seldata(para/2+1:3*para/4),seldata40];
seldata44=[seldata40,seldata40,seldata40,seldata(3*para/4+1:para)];
%******************* Ifft************************ 
y41=ifft(seldata41);                 %  ifft : built in function
y42=ifft(seldata42);
y43=ifft(seldata43);
y44=ifft(seldata44);
Vloop=2.^V;
B4=zeros(Vloop,V);
for vvv=1:1:Vloop
      a=rand(1,V);
      B4(vvv,:)=(a<0.25)+j*(a>=0.25).*(a<0.5)-(a>=0.5).*(a<0.75)-j*(a>=0.75);
ypts=B4(vvv,1)*y41+B4(vvv,2)*y42+B4(vvv,3)*y43+B4(vvv,4)*y44;
mma4(vvv)=max(abs(ypts).^2);
end
[mmioa4,idx4]=min(mma4);
b4=B4(idx4,:);
b4
yptsV4=b4(1)*y41+b4(2)*y42+b4(3)*y43+b4(4)*y44;





  M=2;
  Phase2=zeros(M,para);
  Yslm2=zeros(M,para);
  Seldata2=zeros(M,para);
  for mmm=1:M
      a=rand(1,para);
      Phase2(mmm,:)=(a<0.25)+j*(a>=0.25).*(a<0.5)-(a>=0.5).*(a<0.75)-j*(a>=0.75);
      Seldata2(mmm,:)=seldata.*Phase2(mmm,:);      
      Yslm2(mmm,:)=ifft(Seldata2(mmm,:)); %  ifft : built in function
      mmam2(mmm)=max(abs(Yslm2(mmm,:)).^2);
  end
  [mmioam2,idxm2]=min(mmam2);
  P2=Phase2(idxm2,:);
  P2;
  yslm2=Yslm2(mmm,:);
  
  
  
  M=4;
  Phase4=zeros(M,para);
  Yslm4=zeros(M,para);
  Seldata4=zeros(M,para);
  for mmm=1:M
      a=rand(1,para);
      Phase4(mmm,:)=(a<0.25)+j*(a>=0.25).*(a<0.5)-(a>=0.5).*(a<0.75)-j*(a>=0.75);
      Seldata4(mmm,:)=seldata.*Phase4(mmm,:);      
      Ysl4(mmm,:)=ifft(Seldata4(mmm,:)); %  ifft : built in function
      mmam4(mmm)=max(abs(Yslm4(mmm,:)).^2);
  end
  [mmioam4,idxm4]=min(mmam4);
  P4=Phase4(idxm4,:);
  P4;
  yslm4=Yslm4(mmm,:);
  


  

pr(iii)=papr(y);
pr1(iii)=papr(yptsV2);
pr2(iii)=papr(yptsV4);
pr3(iii)=papr(yslm2);
pr4(iii)=papr(yslm4);
warning off MATLAB:divideByZero;
end
Pprr=ccdf(pr);
Pprr1=ccdf(pr1);
Pprr2=ccdf(pr2);
Pprr3=ccdf(pr3);
Pprr4=ccdf(pr4);


papr0_in_dB=2.001:0.001:14;
  figure(20);
    semilogy(papr0_in_dB,Pprr,'k-.');hold on;
    semilogy(papr0_in_dB,Pprr1,'r');
    semilogy(papr0_in_dB,Pprr2,'g');
    semilogy(papr0_in_dB,Pprr3,'m--');
    semilogy(papr0_in_dB,Pprr4,'c--');
    hold off;
    axis([2 14  1e-003 1e000]) ;
    ylabel('Pr(PAPR>PAPR0)');
    xlabel('PAPR0/dB');
    title('performance' );
    legend('k-.,primary OFDM','r,PTS V=2','g,PTS V=4','m--,SLM M=2 ','c--,SLM M=4');
    grid;
    gtext('primary OFDM');
    gtext('V=2');
    gtext('V=4');
    gtext('M=2');
    gtext('M=4');
    

⌨️ 快捷键说明

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