How do I form a new matrix from a given one by picking out some of its columns, using MAGMA?
Picking out columns from a matrix using MAGMA
2 Answers
Suppose you have an $m\times n$ matrix $A=[A_{i,j}]$ defined in MAGMA. Am I correct in thinking that you want to define an $m\times l$ matrix $B=[B_{r,s}]$ in MAGMA such that the columns of $B$ are all copies of columns of $A$. This is easily done using loops. First define $B$ to be the zero matrix over your chosen ring $R$:
B:=ZeroMatrix(R,m,l);
Then suppose you want the 1st column of $B$ to be equal to the $a$-th column of $A$? Then use the following loop:
for i in {1..m} do B[i,1]:=A[i,a]; end for;
Repeating this for all the columns of $B$ will give you your result.
You can actually do this really easily in Magma using the ColumnSubmatrix command, no looping necessary. You can use this in a few ways.
For example if you have a matrix $A$ and you want $B$ to be made up a selection of columns:
1st, 2nd, $\ldots$, 5th columns:
B := ColumnSubmatrix(A, 5);
3rd, 4th, $\ldots$, 7th columns:
B := ColumnSubmatrix(A, 3, 4);
(since 7=3+4) OR
ColumnSubmatrixRange(A, 3, 7);
2nd, 5th, 8th columns: This is trickier. Magma doesn't let you do this cleanly. But you can select rows 2, 5, and 8 of a matrix individually. You can obviously replace [2,5,8] with any arbitrary sequence.
Transpose(Matrix(Transpose(A)[[2,5,8]]));