clear all;close all ; clc;
%% Montadar Abas Taher
% 10/05/2013
%% define parameters
M=input('Constellation Order M = ' );
N=input('length of OFDM symbols N = ');
m=input('how many OFDM symbols to be simulated m = ');
u=input('upsampling factor u = ');
%% define the modems Tx/Rx
Tx=modem.qammod('M',M);
Rx=modem.qamdemod('M',M);
%% data generation
d=randi([0 M-1],m,N);
%% mapping (baseband modulation )
d_mapped=modulate(Tx,d);
%% serial to parallel
d_p2=d_mapped.';
%% zero-padding
J= zpp(d_p2,u);
%% inverse discret Fourier transform (IFFT)
d_ifft=ifft(J);
%% parallel to serail
d_ifft_s=d_ifft.';
%% add noise
count=0;
for SNR=0:2:40;
count=count+1;
d_mapped_noisy=awgn(d_ifft_s,SNR,'measured');
%% receiver
% serial to parallel
d_r_p=d_mapped_noisy.';
%% Discret Fourier transform (FFT)
d_r_p_fft=fft(d_r_p);
%% zero-padding removal
k=zppr(d_r_p_fft,u);
%% parallel to serial
k_p=k.';
%% demapping
k_p_d=demodulate(Rx,k_p);
[n r(count)]=symerr(k_p_d,d);
end
SNR=0:2:40;
figure;
semilogy(SNR,r);
grid;