Matrix Complex - Matrix Example


This tutorial shows an example of a complex number with a 2x2 matrix  that is made up of complex number elements. It performs this operation for four paris points on the left side and displays the result on the right side as shown below. If you are familiar with wireless communication system, you would easily recognize it as QAM constellation. Actually this example is to show how the constellation changes when it is multiplexed with a certain complex matrix. I picked the complex matrix which is same or similar to the precoding matrix in LTE.


I used a matrix with a very special complex number which is very widely used in engineering. It is the complex number expressed in Euler form.

If you are not familiar with Complex Number, see my note on Complex number. If you don't know how to do complex number multiplication, see this note.



Followings are the code that I wrote in Octave to creates all the plots shown in this page. You may copy these code and play with these codes. Change variables and try yourself until you get your own intuitive understanding.


< Code 1 >


N = 500;

rand ("seed", 100);


n1 = 0.1*(randn(1,N) + j*randn(1,N));

n2 = 0.1*(randn(1,N) + j*randn(1,N));

c1 = (2*randi([0 1],1,N)-1) + j*(2*randi([0 1],1,N)-1);

c2 = (2*randi([0 1],1,N)-1) + j*(2*randi([0 1],1,N)-1);


c1 = c1 + n1;

c2 = c2 + n2;


tstep = pi/20;





e3 = exp(k*t*j)*exp(j*d);


n = 2;

m =  exp(-j*n*2*pi/40);     


tc = m * c1;


hFig = figure(1,'Position',[300 300 900 250]);    


hold on;


hold on;

plot(real(e3),imag(e3),'bo','MarkerFaceColor',[0 0 1]);

axis([-1.1 1.1 -1.1 1.1]);

xlabel('real : e^{j t}');

ylabel('imaginary : e^{j t}');


plot(real(m),imag(m),'ro',"markerfacecolor",[1 0 0],'MarkerSize',12);

daspect([1 1]);

quiver([0],[0],[real(m)],[imag(m)],"color","red","maxheadsize", 0.1);

line([-1.2 1.2],[0 0],'color','black');

line([0 0],[-1.2 1.2],'color','black');

hold off;


box off;

axis off;

daspect([1 1]);



hold on;

plot(real(c1),imag(c1),'bo','MarkerFaceColor',[0 0 1],'MarkerSize',2);

axis([-2 2 -2 2]);

daspect([1 1]);

hold off;

grid on;

box on;



hold on;

tc1 = tc;

plot(real(tc1),imag(tc1),'ro','MarkerFaceColor',[1 0 0],'MarkerSize',2);

axis([-2 2 -2 2]);

daspect([1 1]);

hold off;

grid on;

box on;