0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 ParaFBMC=InitializeChainParameters( 'FBMC-OQAM' )
0020 ParaFBMC.ActiveSubcarriers=(11:ParaFBMC.nSubcarriers-10);
0021 ParaFBMC.Ns=2000;
0022 ParaFBMC.N_T=2;
0023 ParaFBMC.N_R=2;
0024 ParaFBMC.S=min(ParaFBMC.N_T,ParaFBMC.N_R);
0025
0026
0027
0028
0029 ParaOFDM=InitializeChainParameters( 'CP-OFDM' )
0030 ParaOFDM.ActiveSubcarriers=(11:ParaOFDM.nSubcarriers-10);
0031 ParaOFDM.Ns=1000;
0032 ParaOFDM.N_T=2;
0033 ParaOFDM.N_R=2;
0034 ParaOFDM.S=min(ParaOFDM.N_T,ParaOFDM.N_R);
0035
0036
0037
0038
0039 d_FBMC = GenerateData (ParaFBMC);
0040 s_FBMC = Modulator(d_FBMC, ParaFBMC );
0041
0042
0043 d_OFDM = GenerateData (ParaOFDM);
0044 s_OFDM = Modulator(d_OFDM, ParaOFDM );
0045
0046
0047
0048 C=GenerateRayleighChannelReal('ITU_VehA', ParaFBMC);
0049
0050 r_FBMC = Channel_Multipath( s_FBMC, C );
0051 r_FBMC = Channel_AWGN( r_FBMC, ParaFBMC );
0052
0053 r_OFDM = Channel_Multipath( s_OFDM, C );
0054 r_OFDM = Channel_AWGN( r_OFDM, ParaOFDM );
0055
0056
0057
0058
0059 z_FBMC = Demodulator( r_FBMC, ParaFBMC );
0060 [ x, B ] = Equalizer( z_FBMC, C, ParaFBMC, 'SingleTap' );
0061 d_hat = real(x);
0062
0063 NMSE_FBMC = 2/ParaFBMC.Es* MSEComputes( d_FBMC, d_hat, ParaFBMC );
0064 NMSE_FBMC_singletaptheo=2/ParaFBMC.Es*MSESingleTapTheo( B, C, ParaFBMC );
0065
0066
0067 z_OFDM = Demodulator( r_OFDM, ParaOFDM );
0068 [ d_hat, B ] = Equalizer( z_OFDM, C, ParaOFDM, 'SingleTap');
0069
0070 NMSE_OFDM = 1/ParaOFDM.Es*MSEComputes( d_OFDM, d_hat, ParaOFDM );
0071 NMSE_OFDM_singletaptheo=1/ParaOFDM.Es*MSESingleTapTheo( B, C, ParaOFDM );
0072
0073
0074
0075 N_fft = 1e4;
0076 psd_FBMC = 10*log10(sum(abs(1/sqrt(N_fft).*fft(s_FBMC,N_fft,2)).^2,1));
0077 psd_OFDM = 10*log10(sum(abs(1/sqrt(N_fft).*fft(s_OFDM,N_fft,2)).^2,1));
0078 frequency = ParaFBMC.nSubcarriers/N_fft*(0:N_fft-1);
0079 figure
0080 plot(frequency,psd_OFDM,'--r')
0081 hold on
0082 plot(frequency,psd_FBMC,'-b')
0083 xlim([frequency(1) frequency(end)])
0084 xlabel('Subcarrier index')
0085 legend('CP-OFDM','FBMC-OQAM')
0086
0087 figure
0088 plot(ParaFBMC.ActiveSubcarriers,10*log10(NMSE_FBMC_singletaptheo(ParaFBMC.ActiveSubcarriers)),'-b','markersize',8,'linewidth',1.5)
0089 hold on
0090 plot(ParaFBMC.ActiveSubcarriers,10*log10(NMSE_FBMC),'xb','markersize',8,'linewidth',1.5)
0091 plot(ParaOFDM.ActiveSubcarriers,10*log10(NMSE_OFDM_singletaptheo(ParaOFDM.ActiveSubcarriers)),'--r','markersize',8,'linewidth',1.5)
0092 plot(ParaOFDM.ActiveSubcarriers,10*log10(NMSE_OFDM),'xr','markersize',8,'linewidth',1.5)
0093 xlabel('Subcarrier index')
0094 ylabel('NMSE [dB]')
0095 xlim([min(ParaFBMC.ActiveSubcarriers) max(ParaFBMC.ActiveSubcarriers)])
0096 legend('FBMC-OQAM theo','FBMC-OQAM simu','CP-OFDM theo','FBMC-OQAM simu')