packagecom.top.matrix;importcom.top.constants.OrderEnum;importjava.io.Serializable;public class Matrix implementsSerializable {private double[][] matrix;//矩阵列数
private intmatrixColCount;//矩阵行数
private intmatrixRowCount;/*** 构造一个空矩阵*/
publicMatrix() {this.matrix = null;this.matrixColCount = 0;this.matrixRowCount = 0;
}/*** 构造一个matrix矩阵
*@parammatrix*/
public Matrix(double[][] matrix) {this.matrix =matrix;this.matrixRowCount =matrix.length;this.matrixColCount = matrix[0].length;
}/*** 构造一个rowCount行colCount列值为0的矩阵
*@paramrowCount
*@paramcolCount*/
public Matrix(int rowCount,intcolCount) {double[][] matrix = new double[rowCount][colCount];for (int i = 0; i < rowCount; i++) {for (int j = 0; j < colCount; j++) {
matrix[i][j]= 0;
}
}this.matrix =matrix;this.matrixRowCount =rowCount;this.matrixColCount =colCount;
}/*** 构造一个rowCount行colCount列值为val的矩阵
*@paramval
*@paramrowCount
*@paramcolCount*/
public Matrix(double val,int rowCount,intcolCount) {double[][] matrix = new double[rowCount][colCount];for (int i = 0; i < rowCount; i++) {for (int j = 0; j < colCount; j++) {
matrix[i][j]=val;
}
}this.matrix =matrix;this.matrixRowCount =rowCount;this.matrixColCount =colCount;
}public double[][] getMatrix() {returnmatrix;
}public void setMatrix(double[][] matrix) {this.matrix =matrix;this.matrixRowCount =matrix.length;this.matrixColCount = matrix[0].length;
}public intgetMatrixColCount() {returnmatrixColCount;
}public intgetMatrixRowCount() {returnmatrixRowCount;
}/*** 获取矩阵指定位置的值
*
*@paramx
*@paramy
*@return
*/
public double getValOfIdx(int x, int y) throwsIllegalArgumentException {if (matrix == null) {throw new IllegalArgumentException("矩阵为空");
}if (x > matrixRowCount - 1) {throw new IllegalArgumentException("索引x越界");
}if (y > matrixColCount - 1) {throw new IllegalArgumentException("索引y越界");
}returnmatrix[x][y];
}/*** 获取矩阵指定行
*
*@paramx
*@return
*/
public Matrix getRowOfIdx(int x) throwsIllegalArgumentException {if (matrix == null) {throw new IllegalArgumentException("矩阵为空");
}if (x > matrixRowCount - 1) {throw new IllegalArgumentException("索引x越界");
}double[][] result = new double[1][matrixColCount];
result[0] =matrix[x];return newMatrix(result);
}/*** 获取矩阵指定列
*
*@paramy
*@return
*/
public Matrix getColOfIdx(int y) throwsIllegalArgumentException {if (matrix == null) {throw new IllegalArgumentException("矩阵为空");
}if (y > matrixColCount - 1) {throw new IllegalArgumentException("索引y越界");
}double[][] result = new double[matrixRowCount][1];for (int i = 0; i < matrixRowCount; i++) {
result[i][0] =matrix[i][y];
}return newMatrix(result);
}/*** 设置矩阵中x,y位置元素的值
*@paramx
*@paramy
*@paramval*/
public void setValue(int x, int y, doubleval) {if (x > thi