Estimation of channel response and i/q imbalance of mimo ofdm

2 views (last 30 days)
Hello all
I am doing a project on joint estimation of i/q imbalance and channel response for mimo ofdm systems.
My output for i/q is 1 and for channel response I get numerous values. I don't know whether it is correct. Share ur ideas.
clc;
clear all;
close all;
%input
M=128;
nt=2;
nr=1;
L=16;
%r
h1=randn(M,1);
h2=randn(M,1);
h=vertcat(h1,h2);
x1=gallery('circul',M:M);
x2=gallery('circul',M:M);
x=horzcat(x1,x2);
r=x*h;
%ek
e=eye(M);
%y due to cfo
y=e*r;
%z due to cfo and i/q
u=(1+exp(-j*10))/2;
v=(1-exp(j*10))/2;
y1=conj(y);
z=(u*y)+(v*y1);
%a
u1=conj(u);
a=(v/u1);
%ur
z1=conj(z);
a1=abs(a)^2;
e1=conj(e);
ur=(e1*(z-(a*z1))/(1-a1));
%p
p=M/nt;
%ud
a1=randn(M,L);
a2=randn(M,L);
A=horzcat(a1,a2);
a11=randn(M,p-L);
a22=randn(M,p-L);
B=horzcat(a1,a11,a2,a22);
B1=inv(B);
ud=B1*ur;
%CRE
q = 96; %p-L
M = 128;
P = zeros(q,M);
P(:,2:2:end) = (48)*eye(q,M/2);
cre=norm(P*ud)^2;
CRE = norm(P*B1*(z-(a*z1)))^2;
%I/Q_imbalance
o=ctranspose(P*B1*z1); %traspose_conj of p*B1*z1
aopt=(o*(P*B1*z1))/(norm(P*B1*z1))^2;
%channel response
aopt1=abs(aopt)^2;
cha_res=B1*(z-(aopt*z1))/(1-aopt1);
  7 Comments
Walter Roberson
Walter Roberson on 24 Feb 2012
Have another look at that blog. It says inv(A)*b should be replaced by A\b . You have the two variables reversed.

Sign in to comment.

Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!