Matrix transposition: Difference between revisions

m
Fixed lang tags.
(Added Scala)
m (Fixed lang tags.)
Line 5:
 
This example illustrates use of Transpose for the matrices built upon the standard type Float:
<lang ada>with Ada.Numerics.Real_Arrays; use Ada.Numerics.Real_Arrays;
<lang ada>
with Ada.Numerics.Real_Arrays; use Ada.Numerics.Real_Arrays;
with Ada.Text_IO; use Ada.Text_IO;
Line 32 ⟶ 31:
Put_Line ("After Transposition:");
Put (Transpose (Matrix));
end Matrix_Transpose;</lang>
</lang>
Sample output:
<pre>
Line 49 ⟶ 47:
 
=={{header|ALGOL 68}}==
<lang algol68>main:(
 
[,]REAL m=((1, 1, 1, 1),
(2, 4, 8, 16),
(3, 9, 27, 81),
(4, 16, 64, 256),
(5, 25,125, 625));
 
OP ZIP = ([,]REAL in)[,]REAL:(
[2 LWB in:2 UPB in,1 LWB in:1UPB in]REAL out;
FOR i FROM LWB in TO UPB in DO
out[,i]:=in[i,]
OD;
out
);
 
PROC pprint = ([,]REAL m)VOID:(
FORMAT real fmt = $g(-6,2)$; # width of 6, with no '+' sign, 2 decimals #
FORMAT vec fmt = $"("n(2 UPB m-1)(f(real fmt)",")f(real fmt)")"$;
FORMAT matrix fmt = $x"("n(UPB m-1)(f(vec fmt)","lxx)f(vec fmt)");"$;
# finally print the result #
printf((matrix fmt,m))
);
 
printf(($x"Transpose:"l$));
pprint((ZIP m))
)</lang ada>
)
Output:
<lang algol68>Transpose:
(( 1.00, 2.00, 3.00, 4.00, 5.00),
( 1.00, 4.00, 9.00, 16.00, 25.00),
( 1.00, 8.00, 27.00, 64.00,125.00),
( 1.00, 16.00, 81.00,256.00,625.00));</lang>
=={{header|AutoHotkey}}==
<lang AutoHotkey>a = a
Line 326 ⟶ 324:
Sample originally from ftp://ftp.dra.hmg.gb/pub/ella (a now dead link) - Public release.
 
Code for matrix transpose hardware design verification:<prelang ella>MAC TRANSPOSE = ([INT n][INT m]TYPE t: matrix) -> [m][n]t:
MAC TRANSPOSE = ([INT n][INTi = 1..m]TYPE t:[INT matrix)j ->= 1..n] matrix[mj][ni]t:.</lang>
[INT i = 1..m] [INT j = 1..n] matrix[j][i].
</pre>
 
=={{header|Fortran}}==
In ISO Fortran 90 or later, use the TRANSPOSE intrinsic function:
<lang fortran> integer, parameter :: n = 3, m = 5
real, dimension(n,m) :: a = reshape( (/ (i,i=1,n*m) /), (/ n, m /) )
real, dimension(m,n) :: b
 
b = transpose(a)
 
do i = 1, n
print *, a(i,:)
end do
 
do j = 1, m
print *, b(j,:)
end do</lang>
 
In ANSI FORTRAN 77 with MIL-STD-1753 extensions or later, use nested structured DO loops:
<lang fortran> REAL A(3,5), B(5,3)
DATA ((A(I,J),I=1,3),J=1,5) /1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15/
 
DO I = 1, 3
DO J = 1, 5
B(J,I) = A(I,J)
END DO
END DO</lang>
 
In ANSI FORTRAN 66 or later, use nested labeled DO loops:
<lang fortran> REAL A(3,5), B(5,3)
DATA ((A(I,J),I=1,3),J=1,5) /1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15/
DO 10 I = 1, 3
DO 20 J = 1, 5
B(J,I) = A(I,J)
20 CONTINUE
10 CONTINUE</lang>
 
=={{header|GAP}}==
<lang gap>originalMatrix := [[1, 1, 1, 1],
[2, 4, 8, 16],
[3, 9, 27, 81],
[4, 16, 64, 256],
[5, 25, 125, 625]];
transposedMatrix := TransposedMat(originalMatrix);</lang>
 
=={{header|Groovy}}==
Line 399 ⟶ 395:
For matrices represented as lists, there's ''transpose'':
 
<lang haskell>*Main> transpose [[1,2],[3,4],[5,6]]
<pre>
*Main> transpose [[1,23,5],[32,4],[5,6]]</lang>
[[1,3,5],[2,4,6]]
</pre>
 
For matrices in arrays, one can use ''ixmap'':
 
<lang haskell>import Data.Array
<pre>
import Data.Array
 
swap (x,y) = (y,x)
Line 413 ⟶ 406:
transpArray :: (Ix a, Ix b) => Array (a,b) e -> Array (b,a) e
transpArray a = ixmap (swap l, swap u) swap a where
(l,u) = bounds a</lang>
</pre>
 
=={{header|IDL}}==
Line 420 ⟶ 412:
Standard IDL function <tt>transpose()</tt>
 
<lang idl>m=[[1,1,1,1],[2, 4, 8, 16],[3, 9,27, 81],[5, 25,125, 625]]
print,transpose(m)</lang>
 
=={{header|J}}==
Transpose is the monadic primary verb <tt>|:</tt>
<lang j> ]matrix=: 3 5 $ 10+ i. 15 NB. make and show example matrix
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
 
|: matrix
10 15 20
11 16 21
12 17 22
13 18 23
14 19 24</lang>
 
=={{header|Java}}==
Line 459 ⟶ 451:
 
=={{header|Mathematica}}==
<lang mathematica>originalMatrix = {{1, 1, 1, 1},
{2, 4, 8, 16},
{3, 9, 27, 81},
{4, 16, 64, 256},
{5, 25, 125, 625}}
transposedMatrix = Transpose[originalMatrix]</lang>
 
=={{header|MATLAB}}==
Line 471 ⟶ 463:
 
=={{header|Maxima}}==
<lang maxima>originalMatrix : matrix([1, 1, 1, 1],
[2, 4, 8, 16],
[3, 9, 27, 81],
[4, 16, 64, 256],
[5, 25, 125, 625]);
transposedMatrix : transpose(originalMatrix);</lang>
 
=={{header|MAXScript}}==
Uses the built in transpose() function
<lang maxscript>m = bigMatrix 5 4
for i in 1 to 5 do for j in 1 to 4 do m[i][j] = pow i j
m = transpose m</lang>
 
=={{header|Nial}}==
make an array
<lang nial>|a := 2 3 reshape count 6
=1 2 3
=4 5 6</lang>
transpose it
<lang nial>|transpose a
=1 4
=2 5
=3 6</lang>
 
=={{header|OCaml}}==
Line 589 ⟶ 581:
=={{header|Pop11}}==
 
<lang pop11>define transpose(m) -> res;
<pre>
define transpose(m) -> res;
lvars bl = boundslist(m);
if length(bl) /= 4 then
Line 603 ⟶ 594:
endfor;
endfor;
enddefine;</lang>
</pre>
 
=={{header|Python}}==
Anonymous user