• [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();
            }
        }
    }



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

  • 相关阅读:
    异步nodejs代码的同步样子写法样例
    npm用法及离线安装方法
    javascript 事件相关使用总结01
    python wsgi PEP333 中文翻译
    android webview 播放 video经验总结
    javascript面向对象的写法03
    javascript面向对象的写法02
    Nginx在Windows下的基本介绍安装以及基本使用
    window7下 cmd命令行 Mysql导出表结构 + 表数据
    【一】Spark基础
  • 原文地址:https://www.cnblogs.com/xiaff/p/4856511.html
Copyright © 2020-2023  润新知