public static MatrixBase <T> GetRangeOfRows( MatrixBase <T> matrix, RangeInt rowRange) { if (!matrix.RowRange.Contains(rowRange)) { throw new ArgumentOutOfRangeException("rowRange"); } var rawResult = new T[rowRange.Length, matrix.ColumnCount]; for (int row = rowRange.Start; row < rowRange.End; row++) { for (int col = 0; col < matrix.ColumnCount; col++) { rawResult[row - rowRange.Start, col] = matrix.Data[row, col]; } } MatrixBase <T> result = new MatrixBase <T>(rawResult); return(result); }
public static MatrixBase <T> GetRangeOfColumns( MatrixBase <T> matrix, RangeInt columnRange) { if (!matrix.ColumnRange.Contains(columnRange)) { throw new ArgumentOutOfRangeException("columnRange"); } var rawResult = new T[matrix.RowCount, columnRange.Length]; for (int row = 0; row < matrix.RowCount; row++) { for (int col = columnRange.Start; col < columnRange.End; col++) { rawResult[row, col - columnRange.Start] = matrix.Data[row, col]; } } MatrixBase <T> result = new MatrixBase <T>(rawResult); return(result); }
public bool Contains(RangeInt range) { return(Start <= range.Start && range.End <= End); }