# Generating Block Matrix Dynamically

4 views (last 30 days)
Gözde Üstün on 27 Jun 2020
Commented: Gözde Üstün on 3 Jul 2020
Hello,
I am generating this matrix in 2d:
0.7071 0.7071
0.7071 0.7071
But for even number (and of course greater than 2) I need to generate that:
0.7071 0.7071 0 0
0.7071 0.7071 0 0
0 0 0.7071 0.7071
0 0 0.7071 0.7071
But I can not handle with my size problem. Here is my code:
function [A,B] = CHSH2d(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
A(:,:,1,k)=repmat(projectors_of_sigma_x(:,k),1,d);
if d > 2
A(:,:,1,k) = blkdiag(A(:,:,1,k));
end
end
end
end

Ameer Hamza on 27 Jun 2020
Edited: Ameer Hamza on 27 Jun 2020
This example show how to use blkdiag to create such a matrix
M = [0.7071 0.7071
0.7071 0.7071];
n = 4;
M_cell = repmat({M}, 1, n/2);
M_out = blkdiag(M_cell{:})
Result
M_out =
0.7071 0.7071 0 0
0.7071 0.7071 0 0
0 0 0.7071 0.7071
0 0 0.7071 0.7071
You can avoid for-loop in your code.

Gözde Üstün on 1 Jul 2020
And if you dont know just tell me how can I produce 4*4 matrix for the fisrt case(forgat about everything for block diagonal) I have the following code and I want to produce 4*4 matrix which each element should be 1/sqrt(2)*[1;1] which is the first elemet of projectors_of_sigma_x
function [A,B] = CHSH2d(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
A(:,:,1,k)=repmat(projectors_of_sigma_x(:,k),1,d);
if d > 2
A(:,:,1,k) = ....??
end
end
end
end
Ameer Hamza on 2 Jul 2020
See this
d = 4;
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/2 % what is pattern for k>d/2
A(:,:,1,k)=repmat(projectors_of_sigma_x(:,k),d/2,d);
end
It saves the values of A(:,:1,1) and A(:,:1,2). But how to extent the patten beyond that for an arbitrary value of 'd' is not clear to me. The description you provided is clear for d=4, but what if d=8 or d=16.
Gözde Üstün on 3 Jul 2020
Thank you very much I asked you the wrong question so sorry I will ask the right question now in the different page