Computes theoretical MSE after single-tap equalization. function [ x, B ] = MSESingleTapTheo( B, C, Para, modulation, A ) function [ x, B ] = MSESingleTapTheo( B, C, Para, modulation, A, A_1 ) function [ x, B ] = MSESingleTapTheo( B, C, Para, modulation, A, A_1, A_2 ) The function works for MIMO and SISO systems. Input arguments: B: equalizing matrices at each subcarrier. Size: vector [2*Para.M, 1] if Para.N_T == Para.N_R == 1 and multidimensional array [Para.S,Para.N_R,2*Para.M] otherwise C: channel impulse response. Multidimensional array [Para.N_R, Para.N_T, ~]. Para: structure containing the modulation parameters. A: (optional, by default identity) pre-equalizing matrices at each subcarrier. Size: vector [2*Para.M, 1] if Para.N_T == Para.N_R == 1 and multidimensional array [Para.T,Para.S,2*Para.M] otherwise A_1: (optional, by default 0) first frequency derivative of pre-equalizing matrices at each subcarrier. Size: vector [2*Para.M, 1] if Para.N_T == Para.N_R == 1 and multidimensional array [Para.T,Para.S,2*Para.M] otherwise A_2: (optional, by default 0) second frequency derivative of pre-equalizing matrices at each subcarrier. Size: vector [2*Para.M, 1] if Para.N_T == Para.N_R == 1 and multidimensional array [Para.T,Para.S,2*Para.M] otherwise Ouput arguments: MSE_theo: MSE at each subcarrier. Size: vector [2*Para.M, 1] See also OFDM_MSESingleTapTheor, FBMC_OQAM_MSESingleTapTheorApprox.
0001 function [ MSE_theo ] = MSESingleTapTheo( B, C, Para, A, A_1, A_2 ) 0002 % Computes theoretical MSE after single-tap equalization. 0003 % 0004 % function [ x, B ] = MSESingleTapTheo( B, C, Para, modulation, A ) 0005 % function [ x, B ] = MSESingleTapTheo( B, C, Para, modulation, A, A_1 ) 0006 % function [ x, B ] = MSESingleTapTheo( B, C, Para, modulation, A, A_1, A_2 ) 0007 % 0008 % The function works for MIMO and SISO systems. 0009 % 0010 % Input arguments: 0011 % 0012 % B: equalizing matrices at each subcarrier. Size: vector [2*Para.M, 1] 0013 % if Para.N_T == Para.N_R == 1 and multidimensional array 0014 % [Para.S,Para.N_R,2*Para.M] otherwise 0015 % 0016 % C: channel impulse response. Multidimensional array [Para.N_R, Para.N_T, ~]. 0017 % 0018 % Para: structure containing the modulation parameters. 0019 % 0020 % A: (optional, by default identity) pre-equalizing matrices at each subcarrier. Size: vector [2*Para.M, 1] 0021 % if Para.N_T == Para.N_R == 1 and multidimensional array 0022 % [Para.T,Para.S,2*Para.M] otherwise 0023 % 0024 % A_1: (optional, by default 0) first frequency derivative of pre-equalizing matrices at each 0025 % subcarrier. Size: vector [2*Para.M, 1] if Para.N_T == Para.N_R == 1 and 0026 % multidimensional array [Para.T,Para.S,2*Para.M] otherwise 0027 % 0028 % A_2: (optional, by default 0) second frequency derivative of pre-equalizing matrices at each 0029 % subcarrier. Size: vector [2*Para.M, 1] if Para.N_T == Para.N_R == 1 and 0030 % multidimensional array [Para.T,Para.S,2*Para.M] otherwise 0031 % 0032 % 0033 % Ouput arguments: 0034 % 0035 % MSE_theo: MSE at each subcarrier. Size: vector [2*Para.M, 1] 0036 % 0037 % See also OFDM_MSESingleTapTheor, FBMC_OQAM_MSESingleTapTheorApprox. 0038 0039 % This file is part of WaveComBox: www.wavecombox.com and is distributed under 0040 % the terms of the MIT license. See accompanying LICENSE file. 0041 % Original author: François Rottenberg, May 8, 2018. 0042 % Contributors: 0043 % Change log: 0044 0045 switch Para.Modulation 0046 case 'CP-OFDM' 0047 if exist('A','var')==0 0048 [ MSE_theo ] = OFDM_MSESingleTapTheor( B, C, Para ); 0049 else 0050 [ MSE_theo ] = OFDM_MSESingleTapTheor( B, C, Para, A ); 0051 end 0052 case 'FBMC-OQAM' 0053 if exist('A','var')==0 0054 [ MSE_theo ] = FBMC_OQAM_MSESingleTapTheorApprox( B, C, Para ); 0055 else 0056 if exist('A_1','var')==0 0057 [ MSE_theo ] = FBMC_OQAM_MSESingleTapTheorApprox( B, C, Para, A ); 0058 else if exit('A_2','var')==0 0059 [ MSE_theo ] = FBMC_OQAM_MSESingleTapTheorApprox( B, C, Para, A, A_1 ); 0060 else 0061 [ MSE_theo ] = FBMC_OQAM_MSESingleTapTheorApprox( B, C, Para, A, A_1, A_2 ); 0062 end 0063 end 0064 end 0065 otherwise 0066 error('Modulation not implemented') 0067 end 0068 0069 0070 end 0071