zoukankan      html  css  js  c++  java
  • [Java]编写自己的Matrix矩阵类

    用java实现一个简单的矩阵类,可以实现简单的矩阵计算功能。


    class Matrix


    1.向量点乘
    public static double dot(double[] x,double[] y)

    2.矩阵和向量之积
    public static double[] mult(double[][] a,double[] x)

    3.向量和矩阵之积
    public static double[] mult(double[] y,double[][] a)

    4.矩阵和矩阵之积
    public static double[][] mult(double[][] a,double[][] b)

    5.转置矩阵
    public static double[][] transpose(double[][] a)

    6.打印向量
    public static void printVector(double[] a)

    7.打印矩阵
    public static void printMatrix(double[][] a)

    package com.xiaff;
    
    public class Matrix {
        //向量点乘
        public static double dot(double[] x,double[] y) {
            int lengthX=x.length;
            int lengthY=y.length;
            if(lengthX!=lengthY){
                System.out.println("Cannot Dot Product!");
                return 0.0;
            }
            double answer=0.0;
            for(int i=0;i<lengthX;i++){
                answer+=x[i]*y[i];
            }
            return answer;
        }
    
        //矩阵和向量之积
        public static double[] mult(double[][] a,double[] x){
            int rowA=a.length;
            int columnA=a[0].length;
            int rowX=x.length;
            if(columnA!=rowX){
                System.out.println("Cannot multiply them!");
                return x;
            }
            double[] answer=new double[rowA];
            for(int i=0;i<rowA;i++){
                for(int j=0;j<columnA;j++){
                    answer[i]+=a[i][j]*x[j];
                }
            }
            return answer;
        }
    
        //向量和矩阵之积
        public static double[] mult(double[] y,double[][] a){
            int rowA=a.length;
            int columnA=a[0].length;
            int columnY=y.length;
            if(columnY!=rowA){
                System.out.println("Cannot multiply them!");
                return y;
            }
            double[] answer=new double[rowA];
            for(int i=0;i<columnA;i++){
                for(int j=0;j<columnY;j++){
                    answer[i]+=y[j]*a[j][i];
                }
            }
            return answer;
        }
    
        //矩阵和矩阵之积
        public static double[][] mult(double[][] a,double[][] b){
            int rowA=a.length;
            int rowB=b.length;
            int columnA=a[0].length;
            int columnB=b[0].length;
            if(columnA!=rowB){
                System.out.println("Cannot multiply them!");
                return a;
            }
            double[][] c=new double[rowA][columnB];
            for (int i = 0; i < rowA; i++) {
                for (int j = 0; j < columnB; j++) {
                    for (int k = 0; k < columnA; k++)
                        c[i][j] += a[i][k] * b[k][j];
                }
            }
            return c;
        }
    
        //转置矩阵
        public static double[][] transpose(double[][] a){
            int row=a.length;
            int column=a[0].length;
            if(row!=column){
                System.out.println("Cannot transpose it!");
                return a;
            }
            double[][] b=new double[row][column];
            for(int i=0;i<row;i++){
                for(int j=0;j<column;j++){
                    b[i][j]=a[j][i];
                }
            }
            return b;
        }
    
        //打印向量
        public static void printVector(double[] a){
            for(double i:a){
                System.out.print(i+" ");
            }
            System.out.println();
        }
    
        //打印矩阵
        public static void printMatrix(double[][] a){
            for(double[] row:a){
                for(double i:row)
                    System.out.print(i+" ");
                System.out.println();
            }
        }
    }



    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    LeetCode 485. Max Consecutive Ones
    LeetCode 367. Valid Perfect Square
    LeetCode 375. Guess Number Higher or Lower II
    LeetCode 374. Guess Number Higher or Lower
    LeetCode Word Pattern II
    LeetCode Arranging Coins
    LeetCode 422. Valid Word Square
    Session 共享
    java NIO
    非阻塞IO
  • 原文地址:https://www.cnblogs.com/xiaff/p/4856511.html
Copyright © 2011-2022 走看看