# Result of A(:,:,1,1) coming as result of A(:,:,1,2)

3 views (last 30 days)
Gözde Üstün on 6 Jul 2020
Commented: Christine Tobler on 10 Jul 2020
Hello,
Ihave this code:
function [A,B] = trying(d)
A=zeros(d,d,2,d);
sigma_x = [0,1;1,0];
sigma_z = [1,0;0,-1];
if d==2
x = sigma_x;
z = sigma_z;
end
if d==4
x = kron(sigma_x,sigma_x);
z = kron(sigma_z,sigma_z);
end
[xv1,xv2] = eig(x);
%xv1 = [xv1(:,2),xv1(:,1)];
[zv1,zv2] = eig(z);
%zv1 = [zv1(:,2),zv1(:,1)];
for i=1:d
% for k = 1:2
A(:,:,1,i)= xv1(:,i)*transpose(xv1(:,i));
A(:,:,2,i)= zv1(:,i)*transpose(zv1(:,i));
% end
end
end
However, I have inverse result For instance the result should be like that:
A(:,:,1,1) =
0.5000 0.5000
0.5000 0.5000
A(:,:,2,1) =
1 0
0 1
A(:,:,1,2) =
0.5000 -0.5000
-0.5000 0.5000
But I have this result:
A(:,:,1,1) =
0.5000 -0.5000
-0.5000 0.5000
A(:,:,2,1) =
0 0
0 1
A(:,:,1,2) =
0.5000 0.5000
0.5000 0.5000
So I tried the that But it did not work
xv1 = [xv1(:,2),xv1(:,1)];
zv1 = [zv1(:,2),zv1(:,1)];
for i=1:d
for k = 1:2
A(:,:,1,i)= xv1(:,k)*transpose(xv1(:,k));
A(:,:,2,i)= zv1(:,k)*transpose(zv1(:,k));
end
end
Any idea?
##### 2 CommentsShowHide 1 older comment
Gözde Üstün on 6 Jul 2020
Hello,
Because I am using "eig" function and in the eig function, first eigenvector is coming as second eigen vector.
You are right I (should) have also A(:,:,2,2) but for showing you I just put the other values.

Christine Tobler on 7 Jul 2020
The eigenvectors returned by EIG are returned in the same order as the eigenvalues, but the eigenvalues are not necessarily sorted. Could this be the issue here?
##### 2 CommentsShowHide 1 older comment
Christine Tobler on 10 Jul 2020
You can sort the eigenvalues and eigenvectors before using them further, see this example for how to do that.

R2020a

### Community Treasure Hunt

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

Start Hunting!