java 矩阵相乘 矩阵相加/相减 数组相乘 数组相减 数据转置等函数

//矩阵相乘
    public double[][] multiplyMatrix(double[][] a,double[][] b){

         if(a[0].length != b.length) {
                return null;
         }
         double[][] c=new double[a.length][b[0].length];
            for(int i=0;i<a.length;i++) {
                for(int j=0;j<b[0].length;j++) {
                  for(int k=0;k<a[0].length;k++) {            
                c[i][j] += a[i][k] * b[k][j]; 
               } 
             }
           }
        return c;
    
    }

//矩阵相减
    public double[][] MatrixSubt(double[][]A,double[][] B){ 
        if (A.length != B.length ||  A[0].length != B[0].length )
        {
            return (null);
        }
        double[][]C=new double[A.length][A[0].length];  
        for(int i=0;i<A.length;i++)  
        {  
            for(int j=0;j<A[0].length;j++)  
            {  
                C[i][j]=A[i][j]-B[i][j];  
            }  
          
        }  
        return C;     
        
    } 

//矩阵相加
    public double[][] MatrixAdds(double[][]A,double[][] B){ 
        if (A.length != B.length ||  A[0].length != B[0].length )
        {
            return (null);
        }
        double[][]C=new double[A.length][A[0].length];  
        for(int i=0;i<A.length;i++)  
        {  
            for(int j=0;j<A[0].length;j++)  
            {  
                C[i][j]=A[i][j]+B[i][j];  
            }  
          
        }  
        return C;     
        
    } 

//数组中元素求和
    public double ArrayNumberSum(double[][]A){ 
        if (A.length != 1 )
        {
            return (-1000);
        }
        double sum = 0;
        double[][]C=new double[A.length][A[0].length];  
        for(int i=0;i<A.length;i++)  
        {  
            for(int j=0;j<A[0].length;j++)  
            {  
                sum = sum + A[i][j];  
            }  
          
        }  
        return sum;     
        
    } 

//提取矩阵某一行数据
    public double[][] MatrixRow(double[][]A,int row){ 
        
        double[][] data = new double[1][A[0].length];//new一个一维数组,长度是二维数组列的个数
        for(int i=0;i<A[row].length;i++){//这里获取二维数组 行的值
              data[0][i]=A[row][i];//赋值给一维数组
        }
        return data;     
        
    } 

//提取矩阵某一列数据
    public double[][] MatrixColumn(double[][]A,int column){ 
        
        double[][] data = new double[A.length][1];//new一个一维数组,长度是二维数组列的个数
        for(int i=0;i<A.length;i++){//这里获取二维数组 行的值
              data[i][0]=A[i][column];//赋值给一维数组
        }
        return data;     
        
    } 

//矩阵相加
    public double[][] MatrixAdds(double[][]A,double[][] B){ 
        if (A.length != B.length ||  A[0].length != B[0].length )
        {
            return (null);
        }
        double[][]C=new double[A.length][A[0].length];  
        for(int i=0;i<A.length;i++)  
        {  
            for(int j=0;j<A[0].length;j++)  
            {  
                C[i][j]=A[i][j]+B[i][j];  
            }  
          
        }  
        return C;     
      

//数组中对应位置数据相乘
    public double[][] multiplyArray(double[][] a,double[][] b){

           if(a.length != b.length || a[0].length != b[0].length ) {
                return null;
           }
         double[][] c=new double[a.length][b[0].length];
            for(int i=0;i<a.length;i++) {
                for(int j=0;j<b[0].length;j++) {
                           
                c[i][j] = a[i][j] * b[i][j]; 
               
             }
           }
        return c;
    
    }

//对数据进行转置
     public static double[][] tfunction(double[][] test){  
        int m=test.length;  
        int n=test[0].length;  
        double t[][]=new double[n][m];  
        for(int i=0;i<n;i++){  
            for(int j=0;j<m;j++){  
                t[i][j]=test[j][i];  
            }  
        }  
        return  t;  
    }  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章