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 -->
  • received data sequence

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)
    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); 



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

semilogy(SNR, err_ber_OFDM, 'k-','LineWidth',1)
hold on
xlabel('SNR (dB)');
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

enter image description here

  • $\begingroup$ 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? $\endgroup$ – Marcus Müller Apr 26 at 19:59
  • $\begingroup$ 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. $\endgroup$ – New_student Apr 26 at 20:01
  • $\begingroup$ 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 $\endgroup$ – Marcus Müller Apr 26 at 20:06
  • $\begingroup$ 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. $\endgroup$ – New_student Apr 26 at 20:09
  • $\begingroup$ 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. $\endgroup$ – Marcus Müller Apr 26 at 20:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.