MATLAB Answers

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
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

  4 Comments

Show 1 older comment
Gözde Üstün
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

Sign in to comment.

Answers (0)

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by