# Unable to perform assignment because the size of the left side is 4-by-4 and the size of the right side is 2-by-4.

1 view (last 30 days)
Gözde Üstün on 26 Jun 2020
Commented: Gözde Üstün on 27 Jun 2020
Hello,
I am trying to create block diagonal if dimension d is greater than 2. However I have this error:
Unable to perform assignment because the size of the left side is 4-by-4 and the size of the right side is 2-by-4.
My code is here:
function [A,B] = CH2d(d)
A=zeros(d,d,2,d);
B=A;
projectors_of_sigma_x = [1/sqrt(2)*[1;1],1/sqrt(2)*[1;-1]];
for k = 1:d
for l =1:d
if d > 2
A(:,:,1,k) = blkdiag(A(:,:,1,k));
end
A(:,:,1,k)=repmat(projectors_of_sigma_x(:,k),1,d);
end
end
end

Show 1 older comment
Gözde Üstün on 27 Jun 2020
I am trying to give the value (1/sqrt(2)*[1;1]) to element of matrix A(:,:,1,1) value (1/sqrt(2)*[1;-1]) to element of matrix A(:,:,1,2)
For d = 2 everything is great And my output is correct, you can see my output here:
a(:,:,1,1) =
0.7071 0.7071
0.7071 0.7071
Now I want to do that : if d is even and greater than 2 (for instance d =4), my output should be this:
0.7071 0,7071 0 0
0,7071 0.7071 0 0
0 0 0.7071 0.7071
0 0 0.7071 0.7071
Ameer Hamza on 27 Jun 2020
Gözde Üstün on 27 Jun 2020
Thanks and I replied you via other similar question

R2020a

### Community Treasure Hunt

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

Start Hunting!