## How to generate random projection matrices?

### Rufat Imanov (view profile)

on 24 Jul 2019
Latest activity Edited by Bruno Luong

### Bruno Luong (view profile)

on 26 Jul 2019
As it is said in the question, I am looking for a Matlab function that generates random projection matrices, so that I can use it for linear programming.

### KALYAN ACHARJYA (view profile)

on 24 Jul 2019
Edited by KALYAN ACHARJYA

### KALYAN ACHARJYA (view profile)

on 24 Jul 2019

function P=projection_mat(n)
A=colbasis(magic(n));
P=A*inv(A'*A)*A';
end
The colbasis function is here
Here n represent size of square matrix. Please note that I have answered this question from here
Command Window:
>> y=projection_mat(6)
y =
0.7500 -0.0000 0.2500 0.2500 -0.0000 -0.2500
-0.0000 1.0000 0.0000 -0.0000 -0.0000 0.0000
0.2500 0.0000 0.7500 -0.2500 -0.0000 0.2500
0.2500 -0.0000 -0.2500 0.7500 -0.0000 0.2500
-0.0000 -0.0000 -0.0000 -0.0000 1.0000 -0.0000
-0.2500 0.0000 0.2500 0.2500 -0.0000 0.7500
You can generate any size matries, just pass the same size matrix to colbasis function.
Hope it helps!

Show 1 older comment
Rufat Imanov

### Rufat Imanov (view profile)

on 25 Jul 2019
I have a question, the function generates only the same matrices, so it does not generate random matrix, but generates a single solution
KALYAN ACHARJYA

### KALYAN ACHARJYA (view profile)

on 25 Jul 2019
Is there any necessity having fixed size matrices?
>> y=projection_mat(6)
y =
0.7500 -0.0000 0.2500 0.2500 -0.0000 -0.2500
-0.0000 1.0000 0.0000 -0.0000 -0.0000 0.0000
0.2500 0.0000 0.7500 -0.2500 -0.0000 0.2500
0.2500 -0.0000 -0.2500 0.7500 -0.0000 0.2500
-0.0000 -0.0000 -0.0000 -0.0000 1.0000 -0.0000
-0.2500 0.0000 0.2500 0.2500 -0.0000 0.7500
>> y=projection_mat(5)
y =
1.0000 -0.0000 -0.0000 -0.0000 -0.0000
-0.0000 1.0000 -0.0000 -0.0000 -0.0000
-0.0000 -0.0000 1.0000 -0.0000 0.0000
-0.0000 -0.0000 -0.0000 1.0000 0.0000
-0.0000 -0.0000 -0.0000 -0.0000 1.0000
>>
Rufat Imanov

### Rufat Imanov (view profile)

on 25 Jul 2019
yes, the size of matrix should be the same, but the matrix by itslef needs to change. Beacuse, I am working on finding a specific matrix that can project a square into square, so that the nodes/edges are not outside of the boundary of the square.

### Bruno Luong (view profile)

on 25 Jul 2019
Edited by Bruno Luong

### Bruno Luong (view profile)

on 25 Jul 2019

n = 5
r = 3; % rank, dimension of the projection subspace
[Q,~] = qr(randn(n));
Q = Q(:,1:r);
P = Q*Q' % random projection matrix P^2 = P, rank P = r

Rufat Imanov

### Rufat Imanov (view profile)

on 25 Jul 2019
You are completely right, I have miststated my question, I need to generate an orthogonal projection matrix
Bruno Luong

### Bruno Luong (view profile)

on 25 Jul 2019
Sorry I think the only projection matrix that is orthogonal is diagonal matrix with 1 or 0 on the diagonal. So there is no really randomness for what you ask.
Bruno Luong

### Bruno Luong (view profile)

on 26 Jul 2019
I wonder if you mistaken "orthogonal projection matrix" and "projection matrix that is orthogonal". They are not the same.
Mine is "orthogonal projection matrix", which is projection matrix (P^2==P) that has additional properties
1. symmetric
2. all eigen values are 0 or 1.