数据结构之矩阵实现

来源:互联网 发布:matlab 生成cell矩阵 编辑:程序博客网 时间:2024/06/07 22:52

(1)矩阵的概念:

(2)代码实现:

import java.util.Random;/** * @date 2017-5-30 * @author liuffei * @description 创建矩阵,实现矩阵加法,乘法,转置等运算 */public class Matrix {   private int matrix[][] = null;public Matrix(){}/** * 构造函数,创建row行col列的矩阵 * @param row 行数 * @param col 列数 */public Matrix(int row,int col){matrix = new int[row][col];} /** * 给创建的矩阵赋值 * @param row 行数 * @param col 列数 * @param originalMatrix  */public Matrix(int row,int col,int[][] originalMatrix){matrix = new int[row][col];for(int i = 0;i < row;i++){for(int j = 0;j < col;j++){matrix[i][j] = originalMatrix[i][j];}}}/** * 当前矩阵加法 * @param addMatrix 相加的矩阵 */public  void add(int[][] addMatrix){if(null == matrix || null == addMatrix){return;}else{if(matrix.length != addMatrix.length && matrix[0].length != addMatrix[0].length){return;}else{for(int i = 0;i < matrix.length;i++){for(int j = 0;j < matrix[i].length;j++){matrix[i][j] += addMatrix[i][j];}}}}}/** * 当前矩阵减法 * @param addMatrix 相减的矩阵 */public void sub(int[][] subMatrix){if(null == matrix || null == subMatrix){return;}else{if(matrix.length != subMatrix.length && matrix[0].length != subMatrix[0].length){return;}else{for(int i = 0;i < matrix.length;i++){for(int j = 0;j < matrix[i].length;j++){matrix[i][j] -= subMatrix[i][j];}}}}}/** * 当前矩阵乘法 * @param addMatrix 相乘的矩阵 */public int[][] mul(int[][] mulMatrix){int resultMatrix[][] = new int[matrix.length][matrix.length];if(null == matrix || null == mulMatrix){return null;}else{//要求:matrix列数和mulMatrix的行数相等if(matrix[0].length != mulMatrix.length){return null;}else{for(int i = 0;i < matrix.length;i++){for(int k = 0;k < mulMatrix[0].length;k++){for(int j = 0;j < matrix[i].length;j++){resultMatrix[i][k] += matrix[i][j] * mulMatrix[j][k];}}}}}return resultMatrix;}/** * 当前矩阵转置 * @return 转置后的矩阵 */public int[][] reverse(){int reverseMatrix[][] = new int[matrix[0].length][matrix.length];for(int i = 0;i < matrix.length;i++){for(int j = 0;j < matrix[i].length;j++){reverseMatrix[j][i] = matrix[i][j];}}return reverseMatrix;} /**     * 打印矩阵     * @param matrix 矩阵     */    public  void printMatrix(){    int row = matrix.length;    for(int i = 0;i < row;i++){    for(int j = 0;j < matrix[i].length;j++){    System.out.print(matrix[i][j] + " ");    }    System.out.println("");    }    }        public static void printMatrix(int[][] matrix){    int row = matrix.length;    for(int i = 0;i < row;i++){    for(int j = 0;j < matrix[i].length;j++){    System.out.print(matrix[i][j] + " ");    }    System.out.println("");    }    }        public static int[][] randMatrix(int row,int col){    int[][] originalMatrix = new int[row][col];    Random rand = new Random();    for(int i = 0;i < originalMatrix.length;i++){    for(int j = 0;j < originalMatrix[i].length;j++){    originalMatrix[i][j] = rand.nextInt(10);    }    }    return originalMatrix;    }        public static void main(String args[]){    int originalMatrix[][] = randMatrix(4,3);    int mulMatrix[][] = randMatrix(3,4);    Matrix matrix = new Matrix(4,3,originalMatrix);    System.out.println("初始矩阵是:");    matrix.printMatrix();    matrix.add(originalMatrix);    System.out.println("相加后的矩阵是:");    matrix.printMatrix();    matrix.sub(originalMatrix);    System.out.println("相减后的矩阵是:");    matrix.printMatrix();    int resultMatrix[][] = matrix.reverse();    System.out.println("转置后的矩阵是:");    printMatrix(resultMatrix);    int result2Matrix[][] = matrix.mul(resultMatrix);    System.out.println("相乘后的矩阵是:");    printMatrix(result2Matrix);    }}

(3)实现结果:


原创粉丝点击