function papr
global dataType
global subcarrierMapping
global filterType
global pulseShaping
totalSubcarriers = 512; % Number of total subcarriers.
numSymbols = 16; % Data block size.
Fs = 5e6; % System bandwidth.
Ts = 1/Fs; % System sampling rate.
Nos = 4; % Oversampling factor.
Nsub = totalSubcarriers;
Fsub = [0:Nsub-1]*Fs/Nsub; % Subcarrier spacing.
Q = totalSubcarriers/numSymbols; % Bandwidth spreading factor of IFDMA.
Q_tilda = 31; % Bandwidth spreading factor of DFDMA. Q_tilda < Q.
rolloffFactor = 0.0999999999; %Rolloff factor for the raised-cosine filter.
numRuns = 1000; % Number of runs.
paprOFDMA = zeros(1,numRuns); % Initialize the PAPR results.
paprSCFDMA = zeros(1,numRuns);
if filterType == 1 %'rc',Raised-cosine filter.
psFilter = rcPulse(Ts,Nos,rolloffFactor);
elseif filterType == 2 % 'rr',Root raised-cosine filter.
psFilter= rrcPulse(Ts, Nos, rolloffFactor);
end
for n = 1:numRuns,
if dataType ==1 % 'QPSK'
tmp = round(rand(numSymbols,2)); % Generate random data.
tmp = tmp*2 - 1;
data = (tmp(:,1) + j*tmp(:,2))/sqrt(2);
elseif dataType ==2 % '16QAM'
dataSet = [-3+3i -1+3i 1+3i 3+3i ...
-3+i -1+i 1+i 3+i ...
-3-i -1-i 1-i 3-i ...
-3-3i -1-3i 1-3i 3-3i];
dataSet = dataSet / sqrt(mean(abs(dataSet).^2));
tmp = ceil(rand(numSymbols,1)*16);
for k = 1:numSymbols,
if tmp(k) == 0
tmp(k) = 1;
end
data(k) = dataSet(tmp(k));
end
data = data.';
end
t = [0:Ts/Nos:Nsub*Ts]; % Time range of the OFDM symbol.
y1 = 0;
for k = 1:numSymbols,
y1= y1 + data(k)*exp(j*2*pi*Fsub(k)*t); % OFDM modulation.
end
X = fft(data);
Y = zeros(totalSubcarriers,1); % Initialize the subcarriers.
if subcarrierMapping == 1 %'IFDMA'
Y(1:Q:totalSubcarriers) = X;
elseif subcarrierMapping == 2 %'LFDMA'
Y(1:numSymbols) = X;
elseif subcarrierMapping ==3 % 'DFDMA'
Y(1:Q_tilda:Q_tilda*numSymbols) = X;
end % Convert data back to time domain.
y2 = ifft(Y);
if pulseShaping == 1 % Perform pulse shaping.
y_oversampled(1:Nos:Nos*totalSubcarriers) = y2; % Up-sample the symbols.
y_result = filter(psFilter, 1, y_oversampled); % Perform filtering.
else
y_result = y2;
end
paprOFDMA(n) = 10*log10(max(abs(y1).^2) / mean(abs(y1).^2));% Calculate PAPR.
paprSCFDMA(n) = 10*log10(max(abs(y_result).^2) / mean(abs(y_result).^2));
end
[N1,X1] = hist(paprOFDMA, 100); % Plot CCDF.
[N2,X2] = hist(paprSCFDMA, 100);
semilogy(X1,1-cumsum(N1)/1000,'-*')%max(cumsum(N1))
hold on
semilogy(X2,1-cumsum(N2)/max(cumsum(N2)),'b')
legend('OFDM','SCFDMA')
xlabel('룟엇令papr(dB)')
ylabel('매쪽')