/// <summary> /// Returns a new matrix with all of the specified columns removed /// </summary> public Matrix RemoveColumns(int[] passedIndicesOfColumnsToRemove) { Matrix returnMatrix = new Matrix(this); int[] indicesOfColumnsToRemove = new int[passedIndicesOfColumnsToRemove.Count()]; passedIndicesOfColumnsToRemove.CopyTo(indicesOfColumnsToRemove, 0); foreach (int columnToRemove in indicesOfColumnsToRemove) { returnMatrix = returnMatrix.RemoveColumn(columnToRemove); //Now that the matrix has shrunk by 1 column, all of the indices at or after that column need to be decreased by 1 int arrayIndex = 0; foreach (int index in indicesOfColumnsToRemove) { if (index >= columnToRemove) { indicesOfColumnsToRemove[arrayIndex] = index - 1; } arrayIndex++; } } return returnMatrix; }
/// <summary> /// Returns a matrix with the specified row and column removed /// </summary> public Matrix GetSubMatrix(int indexOfRowToLeaveOut, int indexOfColumnToLeaveOut) { Matrix subMatrix = new Matrix(this.NumberOfRows - 1, this.NumberOfColumns - 1); subMatrix = this.RemoveRow(indexOfRowToLeaveOut); subMatrix = subMatrix.RemoveColumn(indexOfColumnToLeaveOut); return subMatrix; //return new Matrix(_matrix.SubMatrix(indexOfColumnToLeaveOut, this.NumberOfColumns - 1, indexOfColumnToLeaveOut, this.NumberOfRows - 1)); }