subMatrixColumn(indices, startRow, endRow) {
                if (startRow === undefined) startRow = 0;
                if (endRow === undefined) endRow = this.rows - 1;
                if ((startRow > endRow) || (startRow < 0) || (startRow >= this.rows) || (endRow < 0) || (endRow >= this.rows)) {
                    throw new RangeError('Argument out of range');
                }

                var newMatrix = new this.constructor[Symbol.species](endRow - startRow + 1, indices.length);
                for (var i = 0; i < indices.length; i++) {
                    for (var j = startRow; j <= endRow; j++) {
                        if (indices[i] < 0 || indices[i] >= this.columns) {
                            throw new RangeError('Column index out of range: ' + indices[i]);
                        }
                        newMatrix.set(j - startRow, i, this.get(j, indices[i]));
                    }
                }
                return newMatrix;
            }
Returns a subset of the matrix based on an array of column indices
@param {Array} indices - Array containing the column indices
@param {number} [startRow = 0] - First row index
@param {number} [endRow = this.rows-1] - Last row index
@return {Matrix}