Home > WaveComBox > Example > PSD_comparison.m

PSD_comparison

PURPOSE ^

PSD comparison between CP-OFDM, W-OFDM, F-OFDM, FBMC-OQAM and UFMC

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 PSD comparison between CP-OFDM, W-OFDM, F-OFDM, FBMC-OQAM and UFMC
 modulations

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % PSD comparison between CP-OFDM, W-OFDM, F-OFDM, FBMC-OQAM and UFMC
0002 % modulations
0003 
0004 % This file is part of WaveComBox: www.wavecombox.com and is distributed under
0005 % the terms of the MIT license. See accompanying LICENSE file.
0006 % Original author: François Rottenberg, October 9, 2018.
0007 % Contributors:
0008 % Change log:
0009 clear all
0010 close all
0011 
0012 %% Modulation parameters
0013 
0014 % Parameters of the W-OFDM modulation
0015 ParaW_OFDM=InitializeChainParameters( 'W-OFDM' ); % initialize parameters of the W-OFDM chain
0016 ParaW_OFDM.Ns=2000; % number of multicarrier symbols
0017 
0018 
0019 % Parameters of the FBMC-OQAM modulation
0020 ParaFBMC=InitializeChainParameters( 'FBMC-OQAM' ); % initialize parameters by default of the FBMC-OQAM chain
0021 ParaFBMC.nSubcarriers=ParaW_OFDM.nSubcarriers;
0022 ParaFBMC.ActiveSubcarriers=ParaW_OFDM.ActiveSubcarriers;
0023 ParaFBMC.Ns=ParaW_OFDM.Ns;
0024 
0025 % Parameters of the CP-OFDM modulation
0026 ParaOFDM=InitializeChainParameters( 'CP-OFDM' ); % initialize the general parameters by default of the CP-OFDM chain
0027 ParaOFDM.nSubcarriers=ParaW_OFDM.nSubcarriers;
0028 ParaOFDM.ActiveSubcarriers=ParaW_OFDM.ActiveSubcarriers;
0029 ParaOFDM.Ns=ParaW_OFDM.Ns;
0030 
0031 % Parameters of the UFMC modulation
0032 ParaUFMC=InitializeChainParameters( 'UFMC' ); % initialize the general parameters by default of the CP-OFDM chain
0033 ParaUFMC.nSubcarriers=ParaW_OFDM.nSubcarriers;
0034 ParaUFMC.ActiveSubcarriers=ParaW_OFDM.ActiveSubcarriers;
0035 ParaUFMC.Ns=ParaW_OFDM.Ns;
0036 
0037 % Parameters of the F-OFDM modulation
0038 ParaF_OFDM=InitializeChainParameters( 'F-OFDM' ); % initialize parameters of the F-OFDM chain
0039 ParaF_OFDM.nSubcarriers=ParaW_OFDM.nSubcarriers;
0040 ParaF_OFDM.ActiveSubcarriers=ParaW_OFDM.ActiveSubcarriers;
0041 ParaF_OFDM.Ns=ParaW_OFDM.Ns;
0042 
0043 %% Transmitter
0044 % FBMC-OQAM
0045 d_FBMC = GenerateData (ParaFBMC); % Generate data symbols
0046 s_FBMC = Modulator(d_FBMC, ParaFBMC ); % FBMC-OQAM modulation
0047 
0048 % CP-OFDM
0049 d_OFDM = GenerateData (ParaOFDM); % Generate data symbols
0050 s_OFDM = Modulator(d_OFDM, ParaOFDM ); % CP-OFDM modulation
0051 
0052 % W-OFDM
0053 d_data = GenerateData (ParaW_OFDM); % Generate data symbols
0054 s_W_OFDM = Modulator(d_data, ParaW_OFDM ); % W-OFDM modulation
0055 
0056 % UFMC
0057 d = GenerateData (ParaUFMC); % Generate data symbols
0058 s_UFMC = Modulator(d, ParaUFMC ); % UFMC modulation
0059 
0060 % F-OFDM
0061 d_data = GenerateData (ParaF_OFDM); % Generate data symbols
0062 s_F_OFDM = Modulator(d_data, ParaF_OFDM ); % F-OFDM modulation
0063 
0064 
0065 %% Plot PSD
0066 window=3000;
0067 psd_W_OFDM = 10*log10(pwelch(s_W_OFDM,window));
0068 psd_FBMC = 10*log10(pwelch(s_FBMC,window));
0069 psd_OFDM = 10*log10(pwelch(s_OFDM,window));
0070 psd_UFMC = 10*log10(pwelch(s_UFMC,window));
0071 psd_F_OFDM = 10*log10(pwelch(s_F_OFDM,window));
0072 N_fft = length(psd_FBMC);
0073 N_fft_OFDM = length(psd_OFDM);
0074 
0075 % frequency = ParaFBMC.nSubcarriers/N_fft*(0:N_fft-1);
0076 frequency = ParaFBMC.nSubcarriers/N_fft*(-N_fft/2:1:N_fft/2-1);
0077 figure
0078 plot(ParaFBMC.nSubcarriers/N_fft_OFDM*(-N_fft_OFDM/2:1:N_fft_OFDM/2-1),(psd_OFDM)-max(psd_W_OFDM),'--r','linewidth',1.5)
0079 hold on
0080 plot(frequency,(psd_W_OFDM)-max(psd_W_OFDM),'-g','linewidth',1.5)
0081 plot(frequency,(psd_UFMC)-max(psd_W_OFDM),'-m','linewidth',1.5)
0082 plot(frequency,(psd_F_OFDM)-max(psd_W_OFDM),'-k','linewidth',1.5)
0083 plot(frequency,(psd_FBMC)-max(psd_W_OFDM),'-b','linewidth',1.5)
0084 xlim([frequency(1) frequency(end)])
0085 xlabel('Subcarrier index', 'FontSize', 14)
0086 ylabel('Power [dB]', 'FontSize', 14)
0087 lgd=legend('CP-OFDM','W-OFDM','UFMC','F-OFDM','FBMC-OQAM')
0088 lgd.FontSize = 12;% xlim([ParaFBMC.ActiveSubcarriers(1)-30 ParaFBMC.ActiveSubcarriers(end)+30]-ParaFBMC.nSubcarriers/2)
0089 xlim([ParaFBMC.ActiveSubcarriers(end)-10 ParaFBMC.ActiveSubcarriers(end)+20]-ParaFBMC.nSubcarriers/2)
0090 ylim([-35 0])
0091 % addpath('C:\Users\frottenberg\Google Drive\Doc and postdoc\Ressources utiles\Matlab functions\matlab2tikz-matlab2tikz-722609f\src')
0092 % matlab2tikz('C:\Users\frottenberg\Google Drive\Doc and postdoc\WaveComBox Software\SharedFolder\ICASSP\Fig\PSD.tex','parseStrings',false)

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