Lampiran A Halaman 1 dari 4
LAMPIRAN A
Coding Program dengan software MATLAB 7.11.0 (R2010b) Analisis Reduksi Peak to
Average Power Ratio pada Orthogonal Frequency Division Multiplexing (OFDM)
dengan teknik Konstelasi Hadamard Modulasi QPSK
clc
clear all close all
%% Parameters OFDM
% QPSK Modulation = 4QAM constellation Bit = input('Bit = '); %Data Masukan Line=8;
Fc = 4e9; % Frekuensi Carrier(Hz) c = 3e8; % m/s
fs = 30e3; tsamp = 1/(fs); %% Transmitter
% Membangkitkan Data Bit Secara Acak gen_data = randint(1,Bit);
% Serial To Parallel Converter S2P = reshape(gen_data,Line,[]); [a b] = size(S2P);
% Modulasi QPSK N = Bit/Line;
hModulator = comm.QPSKModulator('BitInput', true); hModulator.PhaseOffset = pi/4;
for x = 1:N;
mod(:,x) = step(hModulator,S2P(:,x)); %QPSK Modulation end
% IFFT
ifft_func = abs(ifft(mod)); % Cyclic Prefix
Ncp = 2; %Number of cyclic prefix
add_CP=[ifft_func(:,end-Ncp+1:end) ifft_func]; % Parallel to Serial Converter
P2S=reshape(add_CP,1,[]); [rows_P2S cols_P2S]=size(P2S); len_ofdm_data = rows_P2S*cols_P2S;
% Actual OFDM signal to be transmitted ofdm_signal = reshape(P2S, 1, len_ofdm_data); figure(1)
Lampiran A Halaman 2 dari 4
title('OFDM Signal');grid on;unused=zeros(1,12); pilot=ones(1,4);
s=[-1-j -1+j 1-j 1+j]; % QPSK randn('state', 12345);
for i=1:4096 % Menghasilkan simbol 4096 OFDM data1=s(randsrc(1,48,2:4));
ofdm_symbol1(i,:)=[data1(1:10) pilot(1) data1(11:20) pilot(2) data1(21:30) pilot(3) data1(31:40) pilot(4) data1(41:48) unused]; end
%save ofdm_4096.mat ofdm_symbol %load ofdm_4096.mat
NN=4096;
N=64; % Jumlah subbands L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal1=abs(ifft([ofdm_symbol1(i,1:32) zeros(1,(L-1)*N) ofdm_symbol1(i,33:64)]));
mean1=mean(abs(time_domain_signal1).^2); peak1=max(abs(time_domain_signal1).^2); papr1(i)=10*log10(peak1/mean1);
end
figure(2)
[cy,cx]=ccdf(papr1,0.1); semilogy(cx,cy)
grid on
xlabel('PAPR0(dB)');
ylabel('CCDF(P[PAPR>PAPR0)'); legend('Original')
%% Transmitter
% Membangkitkan Data Bit Secara Acak gen_data = randint(1,Bit);
% Serial To Parallel Converter S2P = reshape(gen_data,Line,[]); [a b] = size(S2P);
% Modulasi QPSK N = Bit/Line;
hModulator = comm.QPSKModulator('BitInput', true); hModulator.PhaseOffset = pi/4;
for x = 1:N;
mod(:,x) = step(hModulator,S2P(:,x)); %QPSK Modulation end
Lampiran A Halaman 3 dari 4
P(N)=60;row_index=P(N);
modH=row_index*mod*lenght; % IFFT
ifft_func = abs(ifft(modH)); % Cyclic Prefix
Ncp = 2; %Number of cyclic prefix
add_CP=[ifft_func(:,end-Ncp+1:end) ifft_func]; % Parallel To Serial Converter
P2S=reshape(add_CP,1,[]); [rows_P2S cols_P2S]=size(P2S); len_ofdm_data = rows_P2S*cols_P2S;
% Actual OFDM signal to be transmitted ofdm_signal = reshape(P2S, 1, len_ofdm_data); figure(3)
plot(real(ofdm_signal)); xlabel('Time'); ylabel('Amplitude'); title('OFDM Signal');grid on;
unused=zeros(1,12); pilot=ones(1,4);
s=[-1-j -1+j 1-j 1+j]; % QPSK randn('state', 12345);
for i=1:4096 % Menghasilkan simbol 4096 OFDM data=s(randsrc(1,48,1:4));
ofdm_symbol(i,:)=[data(1:10) pilot(1) data(11:20) pilot(2) data(21:30) pilot(3) data(31:40) pilot(4) data(41:48) unused]; end
%save ofdm_4096.mat ofdm_symbol %load ofdm_4096.mat
NN=4096;
N=64; % Jumlah subbands L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal=abs(ifft([ofdm_symbol(i,1:32) zeros(1,(L-1)*N) ofdm_symbol(i,33:64)]));
meano=mean(abs(time_domain_signal).^2); peako=max(abs(time_domain_signal).^2); papro(i)=10*log10(peako/meano);
end
figure(12)
[cy,cx]=ccdf(papro,0.1); semilogy(cx,cy,'g') grid on
xlabel('PAPR0(dB)');
Lampiran A Halaman 4 dari 4
% Buat Grafik CCDFfigure(13)
[cy,cx]=ccdf(papr1,0.1); semilogy(cx,cy)
hold on
[cy,cx]=ccdf(papro,0.1); semilogy(cx,cy,'g') grid on
title('QPSK Modulation'); xlabel('PAPR0(dB)');
Lampiran B Halaman 1 dari 4
LAMPIRAN B
Coding Program dengan software MATLAB 7.11.0 (R2010b) Analisis Reduksi Peak to
Average Power Ratio pada Orthogonal Frequency Division Multiplexing (OFDM)
dengan teknik Konstelasi Hadamard Modulasi 16QAM
clc
clear all close all
%% Parameters OFDM
% QPSK Modulation = 4QAM constellation Bit = input('Bit = '); %Data Masukan Line=8;
Fc = 4e9; % Frekuensi Carrier(Hz) c = 3e8; % m/s
fs = 30e3; tsamp = 1/(fs);
%% Transmitter
% Membangkitkan Data Bit Secara Acak gen_data = randint(1,Bit);
% Serial To Parallel Converter N = Bit/Line;
S2P = reshape(gen_data,Line/2,[]); [a b] = size(S2P);
% Modulasi 16-QAM
dec = bi2de(S2P','left-msb'); M = 16;
hMod = modem.qammod(M); mod = modulate(hMod,dec); mod = reshape(mod,Line,[]);
% IFFT
ifft_func = abs(ifft(mod)); % Cyclic Prefix
Ncp = 2; %Number of cyclic prefix
add_CP=[ifft_func(:,end-Ncp+1:end) ifft_func]; % Parallel To Serial Converter
P2S=reshape(add_CP,1,[]); [rows_P2S cols_P2S]=size(P2S); len_ofdm_data = rows_P2S*cols_P2S;
% Actual OFDM signal to be transmitted ofdm_signal = reshape(P2S, 1, len_ofdm_data); figure(3)
Lampiran B Halaman 2 dari 4
unused=zeros(1,12);pilot=ones(1,4);
s=[-1-j -1+j 1-j 1+j ,-1-3j -1+3j 1-3j 1+3j,-3-j -3+j 3-j 3+j,-3-3j -3+3j 3-3j 3+3j]; % 16QAM
randn('state', 12345);
for i=1:4096 % Menghasilkan simbol 4096 OFDM data1=s(randsrc(1,48,2:4));
ofdm_symbol1(i,:)=[data1(1:10) pilot(1) data1(11:20) pilot(2) data1(21:30) pilot(3) data1(31:40) pilot(4) data1(41:48) unused]; end
%save ofdm_4096.mat ofdm_symbol %load ofdm_4096.mat
NN=4096;
N=64; % Jumlah subbands L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal1=abs(ifft([ofdm_symbol1(i,1:32) zeros(1,(L-1)*N) ofdm_symbol1(i,33:64)]));
mean1=mean(abs(time_domain_signal1).^2); peak1=max(abs(time_domain_signal1).^2); papr1(i)=10*log10(peak1/mean1);
end
figure(6)
[cy,cx]=ccdf(papr1,0.1); semilogy(cx,cy)
grid on
xlabel('PAPR0(dB)');
ylabel('CCDF(P[PAPR>PAPR0)'); legend('Original')
%% Transmitter
% Membangkitkan Data Bit Secara Acak gen_data = randint(1,Bit);
% Modulasi 16QAM
% Serial To Parallel Converter N = Bit/Line;
S2P = reshape(gen_data,Line/2,[]); [a b] = size(S2P);
% Modulasi 16-QAM
dec = bi2de(S2P','left-msb'); M = 16;
hMod = modem.qammod(M); mod = modulate(hMod,dec); mod = reshape(mod,Line,[]);
Lampiran B Halaman 3 dari 4
lenght=64;P(N)=60;
row_index=P(N);
modH=row_index*mod*lenght;
% IFFT
ifft_func = abs(ifft(modH)); % Cyclic Prefix
Ncp = 2; %Number of cyclic prefix
add_CP=[ifft_func(:,end-Ncp+1:end) ifft_func]; % Parallel To Serial Converter
P2S=reshape(add_CP,1,[]); [rows_P2S cols_P2S]=size(P2S); len_ofdm_data = rows_P2S*cols_P2S;
% Actual OFDM signal to be transmitted ofdm_signal = reshape(P2S, 1, len_ofdm_data); figure(3)
plot(real(ofdm_signal)); xlabel('Time'); ylabel('Amplitude'); title('OFDM Signal');grid on;
unused=zeros(1,12); pilot=ones(1,4);
s=[-1-j -1+j 1-j 1+j ,-1-3j -1+3j 1-3j 1+3j,-3-j -3+j 3-j 3+j,-3-3j -3+3j 3-3j 3+3j]; % 16QAM
randn('state', 12345);
for i=1:4096 % Menghasilkan simbol 4096 OFDM data=s(randsrc(1,48,1:4));
ofdm_symbol(i,:)=[data(1:10) pilot(1) data(11:20) pilot(2) data(21:30) pilot(3) data(31:40) pilot(4) data(41:48) unused]; end
%save ofdm_4096.mat ofdm_symbol %load ofdm_4096.mat
NN=4096;
N=64; % Jumlah subbands L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal=abs(ifft([ofdm_symbol(i,1:32) zeros(1,(L-1)*N) ofdm_symbol(i,33:64)]));
meano=mean(abs(time_domain_signal).^2); peako=max(abs(time_domain_signal).^2); papro(i)=10*log10(peako/meano);
end
figure(12)
[cy,cx]=ccdf(papro,0.1); semilogy(cx,cy,'g') grid on
Lampiran B Halaman 4 dari 4
ylabel('CCDF(P[PAPR>PAPR0)');legend('Hadamard')
% Buat Grafik CCDF figure(13)
[cy,cx]=ccdf(papr1,0.1); semilogy(cx,cy)
hold on
[cy,cx]=ccdf(papro,0.1); semilogy(cx,cy,'g') grid on
title('16-QAM Modulation'); xlabel('PAPR0(dB)');
Lampiran G Halaman 1 dari 3
LAMPIRAN G
Coding Program dengan software MATLAB 7.11.0 (R2010b) Analisis Reduksi Peak to
Average Power Ratio pada Orthogonal Frequency Division Multiplexing (OFDM)
clc
clear all close all
%% Initializing Parameters
% QPSK Modulation = 4QAM constellation % 16QAM Modulation = 16QAM constellation Bit = input('bit = '); %Data Masukan
mod_type = input('Enter the modulation type[1 for QPSK,2 for 16QAM]: ');
Line = 8; %Jumlah Baris
Fc = 4e9; % Frekuensi Carrier (Hz) c = 3e8; % m/s
fs = 30e3; tsamp = 1/(fs);
%% Transmitter
% Membangkitkan Data Bit Secara Acak gen_data = randint(1,Bit);
figure(1), stairs(gen_data);
title('Membangkitkan Data Bit Secara Acak'); axis([-0.5 Bit -0.5 1.5]);
xlabel('Data Bit'); ylabel('Amplitude'); % Modulasi QPSK & 16QAM
nc = [4;16]; % 4=(4QAM = QPSK) ; 16=16QAM mode = nc(mod_type);
switch mode case 4
% Serial To Parallel Converter S2P = reshape(gen_data,Line,[]); [a b]= size(S2P);
figure(2);
subplot(411);stairs(S2P(1,:)); axis([-0.5 b -0.5 1.5]);title('Serial to Parallel Converter');xlabel('Data Bit');ylabel('Amplitude');
subplot(412);stairs(S2P(2,:)); axis([-0.5 b -0.5 1.5]);xlabel('Data Bit');ylabel('Amplitude');
subplot(413);stairs(S2P(3,:)); axis([-0.5 b -0.5 1.5]);xlabel('Data Bit');ylabel('Amplitude');
subplot(414);stairs(S2P(4,:)); axis([-0.5 b -0.5 1.5]);xlabel('Data Bit');ylabel('Amplitude');
% Modulasi QPSK N = Bit/Line;
Lampiran G Halaman 2 dari 3
for x = 1:N;mod(:,x)=step(hModulator,S2P(:,x)); %QPSK Modulation end
figure(3), plot(mod,'bo');
title('Constellation Modulation QPSK'); grid off;
axis([-2 2 -2 2]); xlabel('In-Phase'); ylabel('Quadrature'); case 16
% Serial To Parallel Converter S2P = reshape(gen_data,Line/2,[]); [a b]= size(S2P);
figure(2);
subplot(411);stairs(S2P(1,:)); axis([-0.5 b -0.5 1.5]);title('Serial to Parallel Converter');xlabel('Data Bit');ylabel('Amplitude');
subplot(412);stairs(S2P(2,:)); axis([-0.5 b -0.5 1.5]);xlabel('Data Bit');ylabel('Amplitude');
subplot(413);stairs(S2P(3,:)); axis([-0.5 b -0.5 1.5]);xlabel('Data Bit');ylabel('Amplitude');
subplot(414);stairs(S2P(4,:)); axis([-0.5 b -0.5 1.5]);xlabel('Data Bit');ylabel('Amplitude');
% Modulasi 16-QAM
dec = bi2de(S2P','left-msb'); M = 16;
hMod = modem.qammod(M); mod = modulate(hMod,dec); figure(3), plot(mod,'bo');
title('Constellation Modulation 16-QAM'); grid off;
axis([-4 4 -4 4]); xlabel('In-Phase'); ylabel('Quadrature');
mod = reshape(mod,Line,[]); end
% IFFT
ifft_func = ifft(mod);
figure(4), plot(ifft_func, 'ro'); title('IFFT Function');
grid off;
axis([-4 4 -4 4]); xlabel('In-Phase'); ylabel('Quadrature');
% Cyclic Prefix
Ncp = 2; %Number of cyclic prefix
add_CP=[ifft_func(:,end-Ncp+1:end) ifft_func];
% 4. Convert to serial stream for transmission P2S=reshape(add_CP,1,[]);
Lampiran G Halaman 3 dari 3
len_ofdm_data = rows_add_CP*cols_add_CP;figure(5), stairs(P2S)
title('Parallel to Serial Converter') axis([0 b -3 3]);
xlabel('Data Bit'); ylabel('Amplitude');
% Actual OFDM signal to be transmitted ofdm_signal = reshape(P2S, 1, len_ofdm_data); figure(5)
Lampiran C Halaman 1 dari 3
LAMPIRAN C
Coding Program dengan software MATLAB 7.11.0 (R2010b) Analisis Reduksi Peak to
Average Power Ratio pada Orthogonal Frequency Division Multiplexing (OFDM)
dengan teknik PTS Modulasi QPSK
clc
clear all close all
%% Initializing Parameters
% QPSK Modulation = 4QAM constellation % 16QAM Modulation = 16QAM constellation Bit = input('bit = '); %Data Masukan Line = 8; %Jumlah Baris
Fc = 4e9; %Frekuensi Carrier(Hz) c = 3e8; %m/s
v = 3; %Kecepatan Penerima(km/jam) fs = 30e3;
tsamp = 1/(fs);
%% Transmitter
% Membangkitkan Data Bit Secara Acak gen_data = randint(1,Bit);
% Serial To Parallel Converter S2P = reshape(gen_data,Line,[]); [a b] = size(S2P);
% Modulasi QPSK N = Bit/Line;
hModulator = comm.QPSKModulator('BitInput', true); hModulator.PhaseOffset = pi/4;
for x = 1:N;
mod(:,x) = step(hModulator,S2P(:,x)); %QPSK Modulation end
%% PTS V=4;
unused=zeros(1,12); pilot=ones(1,4);
s=[-1-j -1+j 1-j 1+j]; % QPSK randn('state', 12345);
for i=1:4096 % Menghasilkan simbol 4096 OFDM
data=s(randsrc(1,48,1:4));
Lampiran C Halaman 2 dari 3
end%save ofdm_4096.mat ofdm_symbol
% Semua permutasi fasa faktor B p=[1 -1 j -j]; % Faktor fasa mungkin B=[];
for b1=1:4 for b2=1:4 for b3=1:4 for b4=1:4
B=[B; [p(b1) p(b2) p(b3) p(b4)]]; % Semua kemungkinan kombinasi end
end end end
%load ofdm_4096.mat NN=4096;
N=64; % Jumlah subbands L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal=abs(ifft([ofdm_symbol(i,1:32) zeros(1,(L-1)*N) ofdm_symbol(i,33:64)]));
meano=mean(abs(time_domain_signal).^2); peako=max(abs(time_domain_signal).^2); papro(i)=10*log10(peako/meano);
% Partisi Simbol OFDM
P1=[ofdm_symbol(i,1:16) zeros(1,48)];
P2=[zeros(1,16) ofdm_symbol(i,17:32) zeros(1,32)]; P3=[zeros(1,32) ofdm_symbol(i,33:48) zeros(1,16)]; P4=[zeros(1,48) ofdm_symbol(i,49:64)];
% Ubah Pi ke Domain Waktu
Pt1=abs(ifft([P1(1:32) zeros(1,(L-1)*N) P1(33:64)])); Pt2=abs(ifft([P2(1:32) zeros(1,(L-1)*N) P2(33:64)])); Pt3=abs(ifft([P3(1:32) zeros(1,(L-1)*N) P3(33:64)])); Pt4=abs(ifft([P4(1:32) zeros(1,(L-1)*N) P4(33:64)]));
% Gabungkan dalam Time Domain dan temukan papr_min papr_min(i)=papro(i);
for k=1:16 % 16 adalah jumlah kombinasi faktor fase yang mungkin terjadi
final_signal=B(k,1)*Pt1+B(k,2)*Pt2+B(k,3)*Pt3+B(k,4)*Pt4; meank=mean(abs(final_signal).^2); %daya rata-rata
peak=max(abs(final_signal).^2); %daya puncak papr=10*log10(peak/meank);
Lampiran C Halaman 3 dari 3
sig=final_signal;end end
end
% Plot CCDF dari sistem asli dan pts [cy,cx]=ccdf(papro,0.1);
semilogy(cx,cy) hold on
[cy,cx]=ccdf(papr_min,0.1); semilogy(cx,cy,'r')
grid on
title('V=4 Modulasi QPSK'); xlabel('PAPR0(dB)');
Lampiran D Halaman 1 dari 3
LAMPIRAN D
Coding Program dengan software MATLAB 7.11.0 (R2010b) Analisis Reduksi Peak to
Average Power Ratio pada Orthogonal Frequency Division Multiplexing (OFDM)
dengan teknik PTS Modulasi 16QAM
clc
clear all close all
%% Initializing Parameters
% QPSK Modulation = 4QAM constellation % 16QAM Modulation = 16QAM constellation
Bit = input('bit = '); %Data Masukan
Line = 8; %Jumlah Baris
Fc = 4e9; %Frekuensi Carrier(Hz)
c = 3e8; %m/s
v = 3; %Kecepatan Penerima(km/jam)
fs = 30e3; tsamp = 1/(fs);
%% Transmitter
% Membangkitkan Data Bit Secara Acak
gen_data = randint(1,Bit);
% Serial To Parallel Converter
S2P = reshape(gen_data,Line/2,[]); [a b] = size(S2P);
% Modulasi 16-QAM
dec = bi2de(S2P','left-msb'); M = 16;
hMod = modem.qammod(M); mod = modulate(hMod,dec); mod = reshape(mod,Line,[]);
%% PTS
V=4;
unused=zeros(1,12); pilot=ones(1,4);
s1=[-1-j -1+j 1-j 1+j ,-1-3j -1+3j 1-3j 1+3j,-3-j -3+j 3-j 3+j,-3-3j -3+3j 3-3j 3+3j]; % 16QAM
randn('state', 12345);
for i=1:4096 % Menghasilkan simbol 4096 OFDM
data1=s1(randsrc(1,48,1:4));
Lampiran D Halaman 2 dari 3
end
%save ofdm_4096.mat ofdm_symbol
% Semua permutasi fasa faktor B
p=[1 -1 j -j]; % Faktor fasa mungkin
B=[];
for b1=1:4
for b2=1:4
for b3=1:4
for b4=1:4
B=[B; [p(b1) p(b2) p(b3) p(b4)]]; % Semua kemungkinan kombinasi end
end end end
%load ofdm_4096.mat
NN=4096;
N=64; % Jumlah subbands
L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal1=abs(ifft([ofdm_symbol1(i,1:32) zeros(1,(L-1)*N) ofdm_symbol1(i,33:64)]));
meano=mean(abs(time_domain_signal1).^2); peako=max(abs(time_domain_signal1).^2); papro(i)=10*log10(peako/meano);
% Partisi Simbol OFDM
P11=[ofdm_symbol1(i,1:16) zeros(1,48)];
P22=[zeros(1,16) ofdm_symbol1(i,17:32) zeros(1,32)]; P33=[zeros(1,32) ofdm_symbol1(i,33:48) zeros(1,16)]; P44=[zeros(1,48) ofdm_symbol1(i,49:64)];
% Ubah Pi ke Domain Waktu
Pt11=abs(ifft([P11(1:32) zeros(1,(L-1)*N) P11(33:64)])); Pt22=abs(ifft([P22(1:32) zeros(1,(L-1)*N) P22(33:64)])); Pt33=abs(ifft([P33(1:32) zeros(1,(L-1)*N) P33(33:64)])); Pt44=abs(ifft([P44(1:32) zeros(1,(L-1)*N) P44(33:64)]));
% Gabungkan dalam Time Domain dan temukan papr_min
papr_min(i)=papro(i);
for k=1:16 % 16 adalah jumlah kombinasi faktor fase yang mungkin terjadi
final_signal=B(k,1)*Pt11+B(k,2)*Pt22+B(k,3)*Pt33+B(k,4)*Pt44; meank=mean(abs(final_signal).^2); %daya rata-rata
peak=max(abs(final_signal).^2); %daya puncak
papr=10*log10(peak/meank);
Lampiran D Halaman 3 dari 3
sig=final_signal;end end
end
% Plot CCDF dari sistem asli dan pts
[cy,cx]=ccdf(papro,0.1); semilogy(cx,cy)
hold on
[cy,cx]=ccdf(papr_min,0.1); semilogy(cx,cy,'r')
grid on
title('V=4 Modulasi 16QAM'); xlabel('PAPR0(dB)');
Lampiran E Halaman 1 dari 4
LAMPIRAN E
Coding Program dengan software MATLAB 7.11.0 (R2010b) Analisis Reduksi Peak to
Average Power Ratio pada Orthogonal Frequency Division Multiplexing (OFDM)
dengan teknik Clipping Modulasi QPSK
clc
clear all
close all
%% Parameters OFDM
% QPSK Modulation = 4QAM constellation
Bit = input('Bit = '); %Data Masukan
Line=8;
Fc = 4e9; % Frekuensi Carrier(Hz)
c = 3e8; % m/s
fs = 30e3; tsamp = 1/(fs);
%% Transmitter
% Membangkitkan Data Bit Secara Acak
gen_data = randint(1,Bit);
% Serial To Parallel Converter
S2P = reshape(gen_data,Line,[]); [a b] = size(S2P);
% Modulasi QPSK
N = Bit/Line;
hModulator = comm.QPSKModulator('BitInput', true); hModulator.PhaseOffset = pi/4;
for x = 1:N;
mod(:,x) = step(hModulator,S2P(:,x)); %QPSK Modulation end
% IFFT
ifft_func = abs(ifft(mod));
% Cyclic Prefix
Ncp = 2; %Number of cyclic prefix
add_CP=[ifft_func(:,end-Ncp+1:end) ifft_func];
% Parallel To Serial Converter
P2S=reshape(add_CP,1,[]); [rows_P2S cols_P2S]=size(P2S); len_ofdm_data = rows_P2S*cols_P2S;
% Actual OFDM signal to be transmitted
ofdm_signal = reshape(P2S, 1, len_ofdm_data); figure(3)
Lampiran E Halaman 2 dari 4
unused=zeros(1,12);pilot=ones(1,4);
s=[-1-j -1+j 1-j 1+j]; % QPSK
randn('state', 12345);
for i=1:4096 % Menghasilkan simbol 4096 OFDM
data2=s(randsrc(1,48,3:4));
ofdm_symbol2(i,:)=[data2(1:10) pilot(1) data2(11:20) pilot(2) data2(21:30) pilot(3) data2(31:40) pilot(4) data2(41:48) unused];
end
%save ofdm_4096.mat ofdm_symbol %load ofdm_4096.mat
NN=4096;
N=64; % Jumlah subbands
L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal2=abs(ifft([ofdm_symbol2(i,1:32) zeros(1,(L-1)*N) ofdm_symbol2(i,33:64)]));
mean2=mean(abs(time_domain_signal2).^2); semilogy(cx,cy,'r'); grid on
xlabel('PAPR0(dB)');
ylabel('CCDF(P[PAPR>PAPR0)'); legend('Clipping original')
%% Clipping Reduction % Clipping CR=0.8
sigout1= add_CP (1,:); jum_sigout1=sum(sigout1); avg1=jum_sigout1/512;
% Hitung standar deviasi
krg1=sigout1-avg1; pkt1=krg1.^2; bgi1=pkt1./512;
dev1=sqrt(sum(bgi1));
% Mencari Clipping Level
CR1=0.8; A1=CR1*dev1;
clipped=ofdm_signal;
for i=1:length(clipped)
if clipped(i) > A1 clipped(i) = A1;
end
Lampiran E Halaman 3 dari 4
clipped(i) = -A1;end end
figure(7)
plot(real(clipped)); xlabel('Time'); ylabel('Amplitude'); title('clipped Signal 1');grid on;
for i=1:4096 % Menghasilkan simbol 4096 OFDM
data=s(randsrc(1,48,1:4));
ofdm_symbol(i,:)=[data(1:10) pilot(1) data(11:20) pilot(2) data(21:30) pilot(3) data(31:40) pilot(4) data(41:48) unused];
end
%save ofdm_4096.mat ofdm_symbol %load ofdm_4096.mat
NN=4096;
N=64; % Jumlah subbands
L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal=abs(ifft([ofdm_symbol(i,1:32) zeros(1,(L-1)*N) ofdm_symbol(i,33:64)]));
meano=mean(abs(time_domain_signal).^2); semilogy(cx,cy,'g'); grid on
xlabel('PAPR0(dB)');
ylabel('CCDF(P[PAPR>PAPR0)'); legend('Clipping 1')
% Clipping CR=2
sigout2=add_CP(1,:); jum_sigout2=sum(sigout2); avg2=jum_sigout2/512;
% Hitung standar deviasi
krg2=sigout2-avg2; pkt2=krg2.^2; bgi2=pkt2./512;
dev2=sqrt(sum(bgi2));
% Hitung clipping level
CR2=2;
A2=CR2*dev2;
clipped1=ofdm_signal;
for i=1:length(clipped1)
Lampiran E Halaman 4 dari 4
end
if clipped1(i) < -A2 clipped1(i) = -A2;
end end
figure(9)
plot(real(clipped1)); xlabel('Time'); ylabel('Amplitude'); title('clipped Signal 2');grid on;
for i=1:4096 % Menghasilkan simbol 4096 OFDM
data1=s(randsrc(1,48,2:4));
ofdm_symbol1(i,:)=[data1(1:10) pilot(1) data1(11:20) pilot(2) data1(21:30) pilot(3) data1(31:40) pilot(4) data1(41:48) unused];
end
%save ofdm_4096.mat ofdm_symbol %load ofdm_4096.mat
NN=4096;
N=64; % Jumlah subbands
L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal1=abs(ifft([ofdm_symbol1(i,1:32) zeros(1,(L-1)*N) ofdm_symbol1(i,33:64)]));
mean1=mean(abs(time_domain_signal1).^2); semilogy(cx,cy,'C') grid on
xlabel('PAPR0(dB)');
ylabel('CCDF(P[PAPR>PAPR0)'); legend('Clipping Original')
% Plot CCDF dari sistem asli dan clipping
figure(11)
[cy,cx]=ccdf(papr2,0.1); semilogy(cx,cy,'r') hold on
[cy,cx]=ccdf(papro,0.1); semilogy(cx,cy,'g') hold on
[cy,cx]=ccdf(papr1,0.1); semilogy(cx,cy,'C') grid on
title('Clipping Reduction with QPSK'); xlabel('PAPR0(dB)');
ylabel('CCDF(P[PAPR>PAPR0)');
Lampiran F Halaman 1 dari 4
LAMPIRAN F
Coding Program dengan software MATLAB 7.11.0 (R2010b) Analisis Reduksi Peak to
Average Power Ratio pada Orthogonal Frequency Division Multiplexing (OFDM)
dengan teknik Clipping Modulasi 16QAM
clc
clear all
close all
%% Parameters OFDM
% QPSK Modulation = 4QAM constellation
Bit = input('Bit = '); %Data Masukan
Line=8;
Fc = 4e9; % Frekuensi Carrier(Hz)
c = 3e8; % m/s
fs = 30e3; tsamp = 1/(fs);
%% Transmitter
% Membangkitkan Data Bit Secara Acak
gen_data = randint(1,Bit);
% Modulasi 16QAM
% Serial To Parallel Converter
N = Bit/Line;
S2P = reshape(gen_data,Line/2,[]); [a b] = size(S2P);
% Modulasi 16-QAM
dec = bi2de(S2P','left-msb'); M = 16;
hMod = modem.qammod(M); mod = modulate(hMod,dec); mod = reshape(mod,Line,[]);
% IFFT
ifft_func = abs(ifft(mod));
% Cyclic Prefix
Ncp = 2; %Number of cyclic prefix
add_CP=[ifft_func(:,end-Ncp+1:end) ifft_func];
% Parallel To Serial Converter
P2S=reshape(add_CP,1,[]); [rows_P2S cols_P2S]=size(P2S); len_ofdm_data = rows_P2S*cols_P2S;
% Actual OFDM signal to be transmitted
ofdm_signal = reshape(P2S, 1, len_ofdm_data); figure(3)
Lampiran F Halaman 2 dari 4
unused=zeros(1,12); pilot=ones(1,4);
s=[-1-j -1+j 1-j 1+j ,-1-3j -1+3j 1-3j 1+3j,-3-j -3+j 3-j 3+j,-3-3j -3+3j 3-3j 3+3j]; % 16QAM
randn('state', 12345);
for i=1:4096 % Menghasilkan simbol 4096 OFDM
data2=s(randsrc(1,48,3:4));
ofdm_symbol2(i,:)=[data2(1:10) pilot(1) data2(11:20) pilot(2) data2(21:30) pilot(3) data2(31:40) pilot(4) data2(41:48) unused];
end
%save ofdm_4096.mat ofdm_symbol %load ofdm_4096.mat
NN=4096;
N=64; % Jumlah subbands
L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal2=abs(ifft([ofdm_symbol2(i,1:32) zeros(1,(L-1)*N) ofdm_symbol2(i,33:64)]));
mean2=mean(abs(time_domain_signal2).^2); semilogy(cx,cy,'r'); grid on
xlabel('PAPR0(dB)');
ylabel('CCDF(P[PAPR>PAPR0)'); legend('Clipping original')
%% Clipping Reduction % Clipping CR=0.8
sigout1= add_CP (1,:); jum_sigout1=sum(sigout1); avg1=jum_sigout1/512;
% Hitung standar deviasi
krg1=sigout1-avg1; pkt1=krg1.^2; bgi1=pkt1./512;
dev1=sqrt(sum(bgi1));
% Mencari Clipping Level
CR1=0.8; A1=CR1*dev1;
clipped=ofdm_signal;
for i=1:length(clipped)
if clipped(i) > A1 clipped(i) = A1;
Lampiran F Halaman 3 dari 4
if clipped(i) < -A1clipped(i) = -A1;
end end
figure(7)
plot(real(clipped)); xlabel('Time'); ylabel('Amplitude'); title('clipped Signal 1');grid on;
for i=1:4096 % Menghasilkan simbol 4096 OFDM
data=s(randsrc(1,48,1:4));
ofdm_symbol(i,:)=[data(1:10) pilot(1) data(11:20) pilot(2) data(21:30) pilot(3) data(31:40) pilot(4) data(41:48) unused];
end
%save ofdm_4096.mat ofdm_symbol %load ofdm_4096.mat
NN=4096;
N=64; % Jumlah subbands
L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal=abs(ifft([ofdm_symbol(i,1:32) zeros(1,(L-1)*N) ofdm_symbol(i,33:64)]));
meano=mean(abs(time_domain_signal).^2); semilogy(cx,cy,'g'); grid on
xlabel('PAPR0(dB)');
ylabel('CCDF(P[PAPR>PAPR0)'); legend('Clipping 1')
% Clipping CR=2
sigout2=add_CP(1,:); jum_sigout2=sum(sigout2); avg2=jum_sigout2/512;
% Hitung standar deviasi
krg2=sigout2-avg2; pkt2=krg2.^2; bgi2=pkt2./512;
dev2=sqrt(sum(bgi2));
% Hitung clipping level
CR2=2;
A2=CR2*dev2;
clipped1=ofdm_signal;
for i=1:length(clipped1)
Lampiran F Halaman 4 dari 4
clipped1(i) = A2;
end
if clipped1(i) < -A2 clipped1(i) = -A2;
end end
figure(9)
plot(real(clipped1)); xlabel('Time'); ylabel('Amplitude'); title('clipped Signal 2');grid on;
for i=1:4096 % Menghasilkan simbol 4096 OFDM
data1=s(randsrc(1,48,2:4));
ofdm_symbol1(i,:)=[data1(1:10) pilot(1) data1(11:20) pilot(2) data1(21:30) pilot(3) data1(31:40) pilot(4) data1(41:48) unused];
end
%save ofdm_4096.mat ofdm_symbol %load ofdm_4096.mat
NN=4096;
N=64; % Jumlah subbands
L=4; % oversampling factor for i=1:NN
% Hitung papr dari original ofdm
time_domain_signal1=abs(ifft([ofdm_symbol1(i,1:32) zeros(1,(L-1)*N) ofdm_symbol1(i,33:64)]));
mean1=mean(abs(time_domain_signal1).^2); semilogy(cx,cy,'C') grid on
xlabel('PAPR0(dB)');
ylabel('CCDF(P[PAPR>PAPR0)'); legend('Clipping Original')
% Plot CCDF dari sistem asli dan clipping
figure(11)
[cy,cx]=ccdf(papr2,0.1); semilogy(cx,cy,'r') hold on
[cy,cx]=ccdf(papro,0.1); semilogy(cx,cy,'g') hold on
[cy,cx]=ccdf(papr1,0.1); semilogy(cx,cy,'C') grid on
title('Clipping Reduction with 16-QAM'); xlabel('PAPR0(dB)');
ylabel('CCDF(P[PAPR>PAPR0)');