4.06667

4.1 | 15 ratings Rate this file 155 Downloads (last 30 days) File Size: 4.87 KB File ID: #11033
image thumbnail

LS & MMSE channel estimators for OFDM

by Vinay Prabhu

 

09 May 2006 (Updated 19 May 2006)

Compares the performance of the LS and MMSE estimators for a 64 sub-carrier OFDM model

| Watch this File

File Information
Description

Here is a simulation based proof highlighting the superiority of the MMSE[Min Mean Sq Error] channel estimator over the LS[Least Sq] estimator.The two parameters of evaluation turn out to be, quite logically, the SER[Symbol Error Rate] and the Mean Square Error.The channel is assumed to be g(t)=delta(t-0.5 Ts)+delta(t-3.5 Ts)
{Fractionally spaced}.
For more information on the theory and formulae used , please do refer to the paper On "Channel Estimation In OFDM systems" By Jan-Jaap van de Beek, Ove Edfors, Magnus Sandell, Sarah Kate wilson and Petr Ola Borjesson In proceedings Of VTC'95 Vol 2 pg.815-819.The two sub folders contain the code for the simulations related to the two parameters , i.e SER and MSE..

MATLAB release MATLAB 6.1 (R12.1)
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (23)
10 May 2006 sathish narayanan  
10 May 2006 Nishanth Ulhas Nair

Good Paper

11 May 2006 Yubing Zhang

something wrong in your program

11 Jun 2006 manohar vijay

very good

11 Aug 2006 Masa Saito

The program has some redundant parts.
I think the codes below are more simple and may be faster.

(original in MSE_compare.m)
l.18
X=zeros(64,64);
l.27-29
for i=1:64
     X(i,i)=d(i);
end

(modified version)
X=diag(d);
 
(original in MSE_compare.m)
l.19-26
d=rand(64,1);
for i=1:64
    if(d(i)>=0.5)
        d(i)=+1;
    else
        d(i)=-1;
    end
end

(modified version)
d=(-1).^round(rand(64,1));

(original in MSE_compare.m)
gg=zeros(64,64);
for i=1:64
    gg(i,i)=G(i);
end

(modified version)
gg=diag(G);

27 Nov 2006 Xu Maoge

There may be mistake
(original in MSE_compare.m)
Line 71-72.
variance=var(noise);
N=fft(noise);

(modified version)
N=fft(noise);
variance=var(N);

25 Dec 2006 Mulugeta Araya  
26 Dec 2006 O oooo

gg=diag(G);
gg_myu = sum(gg, 1)/64;
->>
gg_myu = G'/64;
???

26 Dec 2006 O oooo

gg_myu = sum(gg, 1)/64;
->>
gg_myu = G.'/64;

26 Dec 2006 O oooo

gg=zeros(64,64);
%for i=1:64
% gg(i,i)=G(i); %ñòðîèì äèàãîíàëüíóþ ìàòðèöó....
%end -->>>
gg=diag(G);

%gg_myu = sum(gg, 1)/64; %õóéíÿ êàêàÿ òî. òî æå ñàìîå ÷òî G'./64... âåêòîð ñòðîêà.
%-->>>
gg_myu = G.';

gg_mid = gg - gg_myu(ones(64,1),:); %ðàçìíîæèëè âåêòîð-ñòðîêó gg_myu äî ìàòðèöû
sum_gg_mid = sum(gg_mid, 1);
Rgg = (gg_mid' * gg_mid- (sum_gg_mid' * sum_gg_mid) / 64) / (64 - 1);
-->>
Rgg = cov(G);
ãûûû)))

27 Dec 2006 O oooo

WRONG!
correct:
N = 64;
for k=0:N-1 % <- error
      s=0;
      for m=1:2
         s=s+(exp(-j*pi*(1/N)*(k+(N-1)*tau(m))) * (( sin(pi*tau(m)) / sin(pi*(1/N)*(tau(m)-k)))));
         %Go through the above cited paper for the theory behind the formula
      end
g(k+1)=s/sqrt(64);
end

04 Apr 2007 LAM LE  
21 May 2007 Juan Miranda

Useful code, though I think you have a mistake:
for k = 0:N-1
    s=0;
    for m=1:2
        s=s+(exp(-j*pi*(1/N)*(k+(N-1)*tau(m))) * (( sin(pi*tau(m)) / sin(pi*(1/N)*(tau(m)-k)))));
    end
    g(k+1)=s/sqrt(N);
end
G = g';%<--- the "'" operator takes the complex conjugate and transposes. I don't think that is what you want. Perhaps you should use ".'"

17 Jul 2007 farzad MOAZZAMI

i like it

17 Nov 2007 farzad MOAZZAMI

MMSE is lower band for blind equalization performance. We are trying CMA+AMA blind equalization scheme for QAM signals. Our MSE is below MMSE curve !

18 Feb 2008 ilshin lee  
03 Apr 2008 Deep Prakash

I liked your code.I am interested in reading full description and full report. Please send me at: dpk_111@rediffmail.com

17 Apr 2008 akm islam

send me the code

17 Apr 2008 akm Islam

you have done an appreciable work, I need ' MATLAB CODE ON OFDM'. Can anybody help me?

27 Jul 2008 le bich Hoa

you have done an appreciable work, I need ' MATLAB CODE ON OFDM'. Can anybody help me?

05 Sep 2010 Tang Shuiyi

it is that i am inerested in.thx

25 Jan 2011 Alejandro

why if i change the number or value of the taps the program just don't work?

only for your data show a good performance

17 Jul 2011 xue junfeng

good

Please login to add a comment or rating.
Updates
10 May 2006

No blocksets required as such..This a matlab code.Must have been a typo selection error during submission..

19 May 2006

As rightly pointed out by Yubing Zhang,
line 37 of the codes mse_compare and ser_compare should be:
s=s+(exp(-j*pi*(1/64)*(k+63*tau(m))) * (( sin(pi*tau(m)) / sin(pi*(1/64)*(tau(m)-k)))));
[The bracket was misplaced earlier]

Tag Activity for this File
Tag Applied By Date/Time
wireless Vinay Prabhu 22 Oct 2008 08:24:52
channel estimation Vinay Prabhu 22 Oct 2008 08:24:52
ofdm Vinay Prabhu 22 Oct 2008 08:24:52
mmse Vinay Prabhu 22 Oct 2008 08:24:52
simulation Vinay Prabhu 22 Oct 2008 08:24:52
channel esti Vinay Prabhu 22 Oct 2008 08:24:52
highlighting Vinay Prabhu 22 Oct 2008 08:24:52
simulation venkat reddy 04 Feb 2009 20:04:43
mmse venkat reddy 04 Feb 2009 20:04:43
ofdm venkat reddy 04 Feb 2009 20:04:43
channel estimation venkat reddy 04 Feb 2009 20:04:43
mmse Fethi Mliki 12 Mar 2009 09:57:28
mse comarew Ahmed ALI 27 Jun 2009 08:04:19
mse comare Ahmed ALI 27 Jun 2009 08:04:21
wireless dan wu 09 Aug 2009 07:29:12
simulation Alecsander Eitan 16 Jun 2010 09:56:25
channel estimation Alecsander Eitan 16 Jun 2010 09:56:29
channel esti Alecsander Eitan 16 Jun 2010 09:56:31
channel esti aomaom 09 Apr 2011 10:03:48
channel esti Nicolas Garcia Ocampo 26 Apr 2011 19:31:51
channel estimation smit 09 May 2011 02:28:00
channel esti smit 12 May 2011 11:07:17
mmse Khalid Hassan 18 Jun 2011 00:19:21
channel estimation Khalid Hassan 18 Jun 2011 00:19:32
simulation Khalid Hassan 18 Jun 2011 00:19:39
mmse Ade adegbite 20 Oct 2011 09:48:46
channel esti Yung 10 Apr 2012 01:59:47
simulation Ning Kong 29 May 2012 20:08:11

Contact us at files@mathworks.com