# On the performance of DCT-based OFDM

I am trying to understand the OFDM based on DCT instead of DFT in order to compare between their performance. In case of AWGN, the performance is logic, but when I perform channel equalization in DCT-domain, I don't get the performance back ! I think the equalization in DCT domain should be performed in different way. Is that right to perform that process as:

• Data sequence -->
• S/P -->
• IDCT -->
• CP insertion -->
• P/S -->
• Channel + noise -->
• S/P -->
• CP removal -->
• DCT -->
• DCT for channel -->
• channel equalization -->

That process was performed in Matlab as below :

clear all; clc; clear;

N = 1024;     %number of symbol
M = 2;       %Modulation order
CP = N/4;     %The CP length
Num_sym = 1; %Number of symbols

SNR = 1 : 5 : 35;
BER_OFDM = zeros(1,length(SNR));

for t = 1:length(SNR)
t
for t2 = 1:10^1

L = 32;
h = randn(L,1) + 1j*randn(L,1);   %Generate the channel

X = randi([0 1] ,N*Num_sym, 1);        %% Generate data
X_mod = qammod(X,M);                   %%Data modulation

X_tr = idct(X_mod);                     %%% IDCT operation
%%%%
X_cp = [X_tr(end-CP+1:end); X_tr];       %%Adding CP
X_chanel = conv(h,X_cp);                 %%Convolution with channel
X_chanel = awgn(X_chanel,SNR(t),'measured');  %%Add the noise
Y = X_chanel(CP+1:end-L+1);               %%Remove CP and delay

H = dct(h,N);                           %Channel in DCT frequency-domain

EbNo_lin = 10^(SNR(t)/10);                 %linear scale
Gz = conj(H) ./ (H.*conj(H) + 1./EbNo_lin);   %%Equalizer coefficients

Y_rec = dct(Y);                            %%DCT operation

Y_r = Y_rec.*Gz;                          %%Equalization

sym_r = qamdemod(Y_r,M);                      %Demodularing received signal
sym_t = qamdemod(X_mod,M);                    %Demodularing transmitting signal

errors_OFDM = sum(xor(sym_r,sym_t));
BER_OFDM(t) = errors_OFDM + BER_OFDM(t);

end

end

err_ber_OFDM = BER_OFDM/(N*log2(M))./10;

semilogy(SNR, err_ber_OFDM, 'k-','LineWidth',1)
hold on
xlabel('SNR (dB)');
ylabel('BER');
grid on


I get such performance as below figure, but I don't think that the performance of OFDM-based DCT is too bad like. I think the channel equalization should be done in different way, but I don't know how

• do you have any source describing this DCT-OFDM? That can only work on real-valued channels (being inherently symmetrical), but yours seems to be a complex channel – i.e. your channel has twice as many degrees of freedom than every DCT coefficient, and hence, you can't compensate it? – Marcus Müller Apr 26 at 19:59
• I am following these two articles hindawi.com/journals/tswj/2014/813429 and this one ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4012512 ... I tried to make the channel as only real values, but I still can't get the performance. – New_student Apr 26 at 20:01
• perspectively, how do you plan to employ this? If you're using QAM, you say "this channel is complex", but then you can't restrict yourself to using a real channel model like you're doing now... unless your complex channel is really just two separate real baseband channels, but that sounds unrealistic – Marcus Müller Apr 26 at 20:06
• You are definitely right. So, I'm using BPSK modulation since the signal in DCT is real. but they channel is not always real at least according to the two papers in my previous comment. – New_student Apr 26 at 20:09
• I'm reading the original DCT-OFDM paper right now – this is kind of a um, how do I put this? A system ignoring its purpose? They show that DCT-OFDM works just as well as DFT-OFDM (at making a channel equalizer unnecessary to use a wideband channel), by requiring a prefilter, which is an MSE-equalizer that makes the channel symmetric, thereby completely forgetting that the whole point of OFDM was to not require that kind of equalizer. – Marcus Müller Apr 26 at 20:11