3
$\begingroup$

How do I form a new matrix from a given one by picking out some of its columns, using MAGMA?

2 Answers 2

3

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.

0

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]]));