Home > WaveComBox > Example > CP_OFDM > JointPreEqualizationAndEqualization.m

JointPreEqualizationAndEqualization

PURPOSE ^

Joint equalization at TX and RX for MIMO CP-OFDM system

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 Joint equalization at TX and RX for MIMO CP-OFDM system

 Example showing how to jointly equalize the channel at the transmitter
 and receiver of a MIMO CP-OFDM system under frequency selective
 channel.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % Joint equalization at TX and RX for MIMO CP-OFDM system
0002 %
0003 % Example showing how to jointly equalize the channel at the transmitter
0004 % and receiver of a MIMO CP-OFDM system under frequency selective
0005 % channel.
0006 
0007 % This file is part of WaveComBox: www.wavecombox.com and is distributed under
0008 % the terms of the MIT license. See accompanying LICENSE file.
0009 % Original author: François Rottenberg, May 8, 2018.
0010 % Contributors:
0011 % Change log:
0012 
0013 % Definition of general parameters
0014 Para=InitializeChainParameters( 'CP-OFDM' ) % initialize parameters of the FBMC-OQAM chain
0015 Para.Ns=2000;
0016 Para.N_T=3;
0017 Para.N_R=2;
0018 Para.S=min(Para.N_T,Para.N_R);
0019 % Para.S=1;
0020 Para.Es_N0_dB=15;
0021 
0022 %% Transmitter
0023 d = GenerateData (Para);
0024 
0025 %% Channel
0026 C=GenerateRayleighChannelReal('ITU_VehA', Para); % We assume the transmitter perfectly knows the channel
0027 ParaPreEqualizer.criterion='SVD';
0028 [d_tilde, A, B ]=PreEqualizer( d, C, Para, 'SingleTap', ParaPreEqualizer );
0029 
0030 s = Modulator(d_tilde, Para ); % CP-OFDM modulation
0031 
0032 r = Channel_Multipath( s, C ); % Multipath channel
0033 r=Channel_AWGN( r, Para ); % AWGN channel, SNR fixed in Para
0034 
0035 %% Receiver
0036 z = Demodulator( r, Para ); % CP-OFDM demodulation
0037 % Conventional single-tap equalizer
0038 ParaEqualizer.criterion='Specific'; % Criterion chosen to design each equalizer
0039 ParaEqualizer.B=B;
0040 [ d_hat, B ] = Equalizer( z, C, Para, 'SingleTap', ParaEqualizer );
0041 MSE = MSEComputes( d, d_hat, Para );
0042 MSE_theo = MSESingleTapTheo( B, C, Para, A );
0043 
0044 
0045 figure
0046 plot(Para.ActiveSubcarriers, 10*log10(MSE),'xb','markersize',8,'linewidth',1.5)
0047 hold on
0048 plot(Para.ActiveSubcarriers, 10*log10(MSE_theo(Para.ActiveSubcarriers)),'-b','markersize',8,'linewidth',1.5)
0049 xlabel('Subcarrier index')
0050 ylabel('MSE [dB]')
0051 xlim([min(Para.ActiveSubcarriers) max(Para.ActiveSubcarriers)])
0052 % ylim([-30 -10])

Generated on Mon 14-Oct-2019 13:48:34 by m2html © 2005