PAPR Reduction-PTS Algorithm
This section of MATLAB source code covers PTS Algorithm for LTE IQ packet PAPR reduction.
Why to reduce PAPR?
The PAPR stands for Peak to average power ratio of a time domain signal x(t). It is the ratio between maximum instantaneous power and its average power. It has been found that if PAPR is lower, power efficiency is higher and hence increase the battery usage for long time. In this page we will see PTS algorithm used for PAPR reduction.There are other techniques also,pls. refer PAPR article.
PTS Algorithm
STEP 1:
In PTS, data symbols in X are partitioned in to M disjoint sub blocks X(i),
where 1 <= i <= M, such that
X = SUM( X(i)) ; 1 <= i <= M
STEP 2:
The sub blocks X(i) are transformed in to M time-domain partial transmit
sequences. x(i) = IFFT (X(i)) ; 1 <= i <= M
Step 3:
These sequences are independently rotated by some phase factors,
bi equal to exp(j*φi) ; 1 <= i <= M.
Step 4:
These are then combined to produce the time domain OFDM
signal packet back,
x = SUM(bi * x(i) ; 1 <= i <= M
PTS algorithm selects a vector bi such that the PAPR of the corresponding transmit sequence x(t) will be the lowest. IQ vector of different wireless standards will have different PAPR time domain pattern based on complex modulation schemes used and OFDM/OFDMA structure. Hence during simulation vivid iterations need to be carried out.
Download Input vector and load in the matlab workspace
Download following IQ vector and load or import into the matlab workspace and run the following matlab code to check the results.
PAPR matlab code
Load any baseband IQ vector and apply following algorithm. Plot the CCDF curve for the input IQ packet as well as output(after PTS algorithm is applied) IQ packet. Following IQ vector is for the LTE vector signal with 1.4MHz bandwidth and FFT size of 128.
%%% removing CP
A=tx_data_frame(1,:)
B1=A(:,11:1:138)'
B2=A(:,148:1:275)'
B3=A(:,285:1:412)'
B4=A(:,422:1:549)'
B5=A(:,559:1:686)'
B6=A(:,696:1:823)'
B7=A(:,833:1:960)'
B8=A(:,971:1:1098)'
B9=A(:,1108:1:1235)'
B10=A(:,1245:1:1372)'
B11=A(:,1382:1:1509)'
B12=A(:,1519:1:1646)'
B13=A(:,1656:1:1783)'
B14=A(:,1793:1:1920)'
CZ= [B1' B2' B3' B4' B5' B6' B7' B8' B9' B10' B11' B12' B13' B14']
%%%%%implementing pts algorithm
B11=exp(i*(2*pi/1))*B1
B21=exp(i*(2*pi/2))*B2
B31=exp(i*(2*pi/3))*B3
B41=exp(i*(2*pi/4))*B4
B51=exp(i*(2*pi/5))*B5
B61=exp(i*(2*pi/6))*B6
B71=exp(i*(2*pi/7))*B7
B81=exp(i*(2*pi/8))*B8
B91=exp(i*(2*pi/9))*B9
B101=exp(i*(2*pi/10))*B10
B111=exp(i*(2*pi/11))*B11
B121=exp(i*(2*pi/12))*B12
B131=exp(i*(2*pi/13))*B13
B141=exp(i*(2*pi/14))*B14
B1Z= [B11' B21' B31' B41' B51' B61' B71' B81' B91' B101' B111' B121' B131' B141']
%%% creating input vector to provide as input for PTS algorithm
%%%This is impaired packet
ts=(256/4e6);
doppler=0.1;
tau=[0.0 0.4 0.9];
pdb=[0 -15 -20];
chan = rayleighchan(ts,doppler,tau,pdb);
%TS is the sample time of the input %0.1e-3;
%signal, in seconds. FD is the maximum Doppler shift, in Hertz. %100 Hz
map_out_chl=filter(chan,CZ(1,1:end));
figure(1);
[N,Z3] = hist(abs(B1Z), 1792);
semilogy(Z3,1-cumsum(N)/max(cumsum(N)),'blue')
hold on
title ('CCDF')
xlabel ('dB')
ylabel ('BER')
grid off;
figure(1);
[N,Z3] = hist(abs(map_out_chl), 1792);
semilogy(Z3,1-cumsum(N)/max(cumsum(N)),'red')
Plot with and without PAPR
Useful Links to MATLAB codes
Refer following as well as links mentioned on left side panel for useful MATLAB codes.
OFDM Preamble generation
Time off estimation corr
Freq off estimation corr
channel estimation
11a WLAN channel
PN sequence generation
OFDMA Tx Rx
AES DES
carrier aggregation
CCDF
FIR Filter
IIR Filter
Low Pass FIR
Viterbi decoder
CRC8 CRC32
RF and Wireless tutorials
WLAN 802.11ac 802.11ad wimax Zigbee z-wave GSM LTE UMTS Bluetooth UWB IoT satellite Antenna RADAR