Changeset 14237 for branches/symbreg-factors-2650/HeuristicLab.Common
- Timestamp:
- 08/05/16 14:25:28 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/symbreg-factors-2650/HeuristicLab.Common/3.3/MatrixExtensions.cs
r14185 r14237 20 20 #endregion 21 21 22 using System.Diagnostics.Contracts; 23 22 24 namespace HeuristicLab.Common { 23 25 public static class MatrixExtensions { … … 35 37 return result; 36 38 } 39 40 /// <summary> 41 /// Concatenates matrices horizontally. 42 /// A B 43 /// 1 2 9 8 44 /// 3 4 7 6 45 /// 46 /// HorzCat(A, B) 47 /// 1 2 48 /// 3 4 49 /// 9 8 50 /// 7 6 51 /// </summary> 52 /// <typeparam name="T"></typeparam> 53 /// <param name="a"></param> 54 /// <param name="b"></param> 55 /// <returns>A new matrix with the number of rows = a.GetLength(0) + b.GetLength(0)</returns> 56 public static T[,] HorzCat<T>(this T[,] a, T[,] b) { 57 Contract.Assert(a.GetLength(1) == b.GetLength(1)); 58 var aLen = a.GetLength(0); 59 var bLen = b.GetLength(0); 60 var result = new T[aLen + bLen, a.GetLength(1)]; 61 for (int i = 0; i < aLen; i++) 62 for (int j = 0; j < a.GetLength(1); j++) 63 result[i, j] = a[i, j]; 64 for (int i = 0; i < bLen; i++) 65 for (int j = 0; j < b.GetLength(1); j++) 66 result[i + aLen, j] = b[i, j]; 67 68 return result; 69 } 70 /// <summary> 71 /// Concatenates matrices vertically. 72 /// A B 73 /// 1 2 9 8 74 /// 3 4 7 6 75 /// 76 /// VertCat(A, B) 77 /// 1 2 9 8 78 /// 3 4 7 6 79 /// </summary> 80 /// <typeparam name="T"></typeparam> 81 /// <param name="a"></param> 82 /// <param name="b"></param> 83 /// <returns>A new matrix with the number of columns = a.GetLength(1) + b.GetLength(1)</returns> 84 public static T[,] VertCat<T>(this T[,] a, T[,] b) { 85 Contract.Assert(a.GetLength(0) == b.GetLength(0)); 86 var aLen = a.GetLength(1); 87 var bLen = b.GetLength(1); 88 var result = new T[a.GetLength(0), aLen + bLen]; 89 for (int i = 0; i < a.GetLength(0); i++) 90 for (int j = 0; j < aLen; j++) 91 result[i, j] = a[i, j]; 92 for (int i = 0; i < a.GetLength(0); i++) 93 for (int j = 0; j < bLen; j++) 94 result[i, j + aLen] = b[i, j]; 95 return result; 96 } 37 97 } 38 98 }
Note: See TracChangeset
for help on using the changeset viewer.