1   package tentti09;
2   
3   /**
4    * Luodaan matriisin transpoosi.
5    * Algoritmi:
6    * <pre>
7    * 0. olkoon matriisi a
8    * 1. luodaan matriisi jossa rivejä yhtä paljon kuin a:ssa rivejä 
9    *    ja sarakkeita yhtä paljon kuin a:ssa rivejä
10   * 2. käydään läpi kaikki a:n rivit indeksillä ir
11   * 3.   jokaisella rivillä käydään läpi kaikki sarakkeet indeksillä is
12   * 4.   tulosmatriisi[is][ir] = a[ir][is]    
13   * </pre>
14   * 
15   * @author vesal
16   * @version 17.12.2009
17   */
18  public class Transpoosi {
19  
20      /**
21       * Luodaan matriisin transpoosimatriisi.
22       * Oletetaan kaikki rivit yhtä pitkiksi.
23       * @param a transponoitava matriisi
24       * @return a:n transpoosi
25       * @example
26       * <pre name="test"> 
27       * #import java.util.Arrays;
28       *   double[][] a1 = {{1,2},{3,4}};
29       *   Arrays.deepToString(transpoosi(a1)) === "[[1.0, 3.0], [2.0, 4.0]]";
30       *   double[][] a2 = {{1,2,3},{4,5,6}};
31       *   Arrays.deepToString(transpoosi(a2)) === "[[1.0, 4.0], [2.0, 5.0], [3.0, 6.0]]";
32       * 
33       * </pre>
34       */
35      public static double[][] transpoosi(double a[][]) {
36          double[][] at = new double[a[0].length][a.length];
37          for (int ir=0; ir < a.length; ir++)
38              for (int is=0; is<a[0].length; is++)
39                  at[is][ir] = a[ir][is];
40          return at;
41      }
42  }
43