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

原创 2018年04月16日 10:24:46
//矩阵相乘
    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;  
    }  


矩阵转置+矩阵相加(三元组)

稀疏矩阵 如果在矩阵中,多数的元素为0,通常认为非零元素比上矩阵所有元素的值小于等于0.05时,则称此矩阵为稀疏矩阵(sparse matrix)。基本结构 //---------稀疏矩阵基本结构...
  • axiqia
  • axiqia
  • 2016-01-25 13:44:05
  • 1701

一元多项式的相加/相减/相乘

  • 2009年05月21日 15:06
  • 231KB
  • 下载

两个矩阵的相加和相乘

//两个矩阵相加和相乘 public class TestMatrixOperation { public static void main(String[] args) { in...
  • u010257696
  • u010257696
  • 2013-09-10 19:04:28
  • 1893

C#实现矩阵加减乘除以及求逆

  • 2013年04月12日 08:53
  • 16KB
  • 下载

TensorFlow矩阵向量运算

1 向量点乘 结果是一个向量在另一个向量方向上投影的长度,是一个标量。 2 向量叉乘 结果是一个和已有两个向量都垂直的向量。 向量a = (x1,y1),b = (x2,y2) a *b =...
  • qfzxhy
  • qfzxhy
  • 2018-01-31 11:12:36
  • 331

[Python]两个list对应元素操作(相减)

两个list的对应元素操作,这里以相减为例: # coding=gbk v1 = [21, 34, 45] v2 = [55, 25, 77] #v = v2 - v1 # Error: T...
  • JoeBlackzqq
  • JoeBlackzqq
  • 2012-03-22 23:07:41
  • 34805

C++实现二位数组加减法

为了深入理解C++中拷贝构造函数、赋值运算符、运算符重载、动态内存分配new,写了一个实现数组加法的类。虽然该程序实现的功能比较简单,但是却包含了不少难点和初学者容易忽视的地方。 //class.h ...
  • HKaisa
  • HKaisa
  • 2016-08-12 00:27:52
  • 2020

数组中两个数相减(相加)的最大值

题目:有一个数组,找出数组中前面的数减去后面的数的最大值。例如数组{9,1,7,18,3,-2,20,4,0,5},最大值是18-(-2)或者20-0。 解法一:把数组分为左右两个部分,相减最大的两个...
  • moses1213
  • moses1213
  • 2016-05-20 11:17:07
  • 1630

稀疏矩阵的运算(相乘,输出,转置,相加)

// Matrix.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; #def...
  • z1d9y0
  • z1d9y0
  • 2014-10-30 18:00:09
  • 1001

c#实现矩阵的转置,相乘等

比较简单,适合 初学者 题目: 定义矩阵类,完成矩阵的产生,转置和相乘(控制台程序) 步骤: 1.可以新创建一个控制台程序,也可在原工程中添加新类 右键工程名 ADD->new items...
  • qipanliming
  • qipanliming
  • 2012-11-15 18:15:12
  • 3708
收藏助手
不良信息举报
您举报文章:java 矩阵相乘 矩阵相加/相减 数组相乘 数组相减 数据转置等函数
举报原因:
原因补充:

(最多只允许输入30个字)