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

📄 ptsv.m

📁 不同的相邻分组数目v实现的pts抑制ofdm峰均比的算法
💻 M
字号:
% Program 2-1
% ptsv.m
% Simulation program to realize PTS with different V  to reduct PAPR of OFDM
% programmed by phui
clc;
clear;
close all;
%************************ preparation part *****************************
para=16;     % Number of parallel channel to transmit (points)
fftlen=16;   % FFT length
nd=1000;     % Number of information OFDM symbol for one loop
%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);       %  ifft : built in function
Vloop=2.^V;
B2=zeros(Vloop,V);
for vvv=1:1:Vloop
      B2(vvv,:)=2*(rand(1,V)>0.5)-1 ;  
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
      B4(vvv,:)=2*(rand(1,V)>0.5)-1 ;  
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;

%************************* Sub-block Partition ***************************
V=8;
seldata80=zeros(1,para/8);
seldata81=[seldata(1:para/8),seldata80,seldata80,seldata80,seldata80,seldata80,seldata80,seldata80];
seldata82=[seldata80,seldata(para/8+1:para/4),seldata80,seldata80,seldata80,seldata80,seldata80,seldata80];
seldata83=[seldata80,seldata80,seldata(para/4+1:3*para/8),seldata80,seldata80,seldata80,seldata80,seldata80];
seldata84=[seldata80,seldata80,seldata80,seldata(3*para/8+1:para/2),seldata80,seldata80,seldata80,seldata80];
seldata85=[seldata80,seldata80,seldata80,seldata80,seldata(para/2+1:5*para/8),seldata80,seldata80,seldata80];
seldata86=[seldata80,seldata80,seldata80,seldata80,seldata80,seldata(5*para/8+1:3*para/4),seldata80,seldata80];
seldata87=[seldata80,seldata80,seldata80,seldata80,seldata80,seldata80,seldata(3*para/4+1:7*para/8),seldata80];
seldata88=[seldata80,seldata80,seldata80,seldata80,seldata80,seldata80,seldata80,seldata(7*para/8+1:para)];
%******************* Ifft************************
y81=ifft(seldata81);            %  ifft : built in function
y82=ifft(seldata82);
y83=ifft(seldata83);
y84=ifft(seldata84);
y85=ifft(seldata85);
y86=ifft(seldata86);
y87=ifft(seldata87);
y88=ifft(seldata88);
Vloop=2.^V;
B8=zeros(Vloop,V);
for vvv=1:1:Vloop
      B8(vvv,:)=2*(rand(1,V)>0.5)-1 ;  
ypts=B8(vvv,1)*y81+B8(vvv,2)*y82+B8(vvv,3)*y83+B8(vvv,4)*y84+B8(vvv,5)*y85+B8(vvv,6)*y86+B8(vvv,7)*y87+B8(vvv,8)*y88;
mma8(vvv)=max(abs(ypts).^2);
end
[mmioa8,idx8]=min(mma8);
b8=B8(idx8,:);
b8
yptsV8=b8(1)*y81+b8(2)*y82+b8(3)*y83+b8(4)*y84+b8(5)*y85+b8(6)*y86+b8(7)*y87+b8(8)*y88;


pr(iii)=papr(y);
pr1(iii)=papr(yptsV2);
pr2(iii)=papr(yptsV4);
pr3(iii)=papr(yptsV8);
end
Pprr=ccdf(pr);
Pprr1=ccdf(pr1);
Pprr2=ccdf(pr2);
Pprr3=ccdf(pr3);

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

⌨️ 快捷键说明

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