Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

matlab help about blind channel estimation for MIMO OFDM

Status
Not open for further replies.

lx8578

Newbie level 3
Joined
Dec 15, 2011
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,323
hi everyone :
i got problem with my matlab code in blind channel estimation for MIMO OFDM ,i can't figure it out ,can anyone help me with that thanks in advance,

clear all
close all
clc
Mt=2;Mr=2;%the number of transmit and received antennas
N=64; %the number of subcarrier
nos=200;%number of symbol
P=3; %length of CP
M=N+P; %the totle length of an OFDM symbol
J=2; %collect J consecutively received OFDM symbols
L=3; %the order of channel
Nm=1;

h11=[-0.049+j*0.359 0.482-j*0.569 -0.556+j*0.587 1];
h12=[0.443-j*0.0364 1 0.921-j*0.194 0.189-j*0.208 ];
h21=[0.221-j*0.322 -0.199+j*0.918 1 0.284-j*0.524 ];
h22=[0.417+j*0.030 1 0.873+j*0.145 -0.285+j*0.309 ];
h1=[-0.049+j*0.359 0.443-j*0.0364;0.221-j*0.322 0.417+j*0.030];
h2=[0.482-j*0.569 1;-0.199+j*0.918 1];
h3=[-0.556+j*0.587 0.921-j*0.194;1 0.873+j*0.145];
h4=[1 0.189-j*0.208;0.284-j*0.524 -0.285+j*0.309 ];
H=[h1 h2 h3 h4];
%HH=[-0.049+j*0.359 0.221-j*0.322 0.482-j*0.569 -0.199+j*0.918 -0.556+j*0.587 1 1 0.284-j*0.524 0.443-j*0.0364 0.417+j*0.030 1 1 0.921-j*0.194 0.873+j*0.145 0.189-j*0.208 -0.285+j*0.309].';
HH=[h1.' h2.' h3.' h4.'].';


%%%%%%%%%%H=h:));%
%H1
H1=zeros((J*M-L)*Mr,J*M*Mt);

H1(1:Mr,:)=[H zeros(Mr,(J*M-L-1)*Mt)];
for i=1:J*M-L-1
htmp=H1((i-1)*Mr+1:i*Mr,:);
H1(i*Mr+1:(i+1)*Mr,:)=[htmp:),(J*M-1)*Mt+1:J*M*Mt),htmp:),1:(J*M-1)*Mt)];
end
%H1;


NRMSE=zeros(1,9);SNR=[];a=[];

SNR1=0:5:50;
for snr=0:5:50
Herr=0;
for i1=1:Nm
Rr=zeros((J*M-L)*Mr,(J*M-L)*Mr);
%-----------------------------------------%
b0=round(rand(1,Mt*2*N*nos));
b=zeros(1,N*nos);
b1=reshape(b0,2,Mt*N*nos).';
b2=bi2de(b1,2,'left-msb');%;
b3=[1+j 1-j -1+j -1-j];
b=b3(b2+1)/sqrt(2);%1*12800;
%
d1=b:));
for i=1:nos-J+1
d4:),i)=d1((i-1)*N*Mt+1:(i+J-1)*N*Mt);%;
end

j=sqrt(-1);
W1=zeros(N,N);
for i1=1:N
for j1=1:N
W1(j1,i1)=exp(j*2*pi*(N-i1)*(j1-1)/N)/sqrt(N);%cp;
end
end
W=[W1,W1:),1:p)].';%;
Ij=eye(J);%
Imt=eye(Mt);
W2=kron(Ij,W);
W3=kron(W2,Imt);%;
W4=conj(W)*(W.');%conj;;
A=kron(Ij,W4);

s=W3*d4;%

r1=H1*s;%;

n=rand(size(r1))+sqrt(-1)*rand(size(r1));%;
n=n/norm(n)*norm(r1)*10^(-snr/20);
SNR=[SNR 20*log10(norm(r1)/norm(n))];
r=r1+n;%

Rr=r*r'/(nos-J+1); %;(J*M-L)*(J*M-L);
%
[U0,S0,V0]=svd(Rr);

%
Q=zeros((L+1)*Mr,(L+1)*Mr);

for k=J*N*Mt+1:(J*M-L)*Mr%,
uk=U0:),k);%
vk1=reshape(uk,Mr,J*M-L);%2*131;
vk=zeros((L+1)*Mr,J*M);%
vk(1:Mr,:)=[vk1 zeros(Mr,L)];%1*180;
for i3=1:L
vktmp=vk((i3-1)*Mr+1:i3*Mr,:);
vk(i3*Mr+1:(i3+1)*Mr,:)=[vktmp:),J*M) vktmp:),1:J*M-1)];
end
Q=Q+vk*A*vk';%vk;;8*8;
end
[U1 S1 V1]=svd(Q);
hr0=U1:),(L+1)*Mr-Mt+1:(L+1)*Mr);%
hb_h=mean(hr0./HH);
hb=hr0/hb_h;
HA=hr0:),1)./hb_h:),1);
HB=hr0:),2)./hb_h:),2);
hb=[HA HB];
Herr1=HH-hb;

for i4=1:Mt
Herr=Herr+(norm(Herr1:),i4)))^2/(norm(H:),i4)))^2;
end
end
NRMSE(snr/5+1)=sqrt(Herr/(Nm*Mt*Mr*(L+1)));%;
end
figure(1)
te=length(H);
plot(1:te,real(H),'ko-',1:te,real(hb),'k+-')
legend('Estimated','Accurate')
figure(2)
plot(1:te,imag(H),'ko-',1:te,imag(hb),'k+-')
legend('Estimated','Accurate')
figure(3)
semilogy(SNR1,NRMSE,'-*k')
xlabel('SNR/dB');ylabel('NRMSE');grid on;
 

i donot found j decelared in your case also if h11 to H are array then you need to put the comma in the array....

Good Luck
 
thank u,but the problem is the result was not what i expected,there is big error in outcome,could you please help me with that?
 

yaa....but look at this way....you are decleared capital J and u r using using small j....where small j will get zero values or junk values....ok

Good Luck
 

i decleared j,you can see it j=sqrt(-1);W1=zeros(N,N);for i1=1:N
but i still can't figure it out ,lol ,thank u !
 

hi...can u explain how u obtained values for h11 and all...
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top