本文章主要介绍了用Java语言实现矩阵相乘,具有不错的的参考价值,希望对您有所帮助,如解说有误或未考虑完全的地方,请您留言指出,谢谢!

矩阵乘法定义:

矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。——来源于百度百科

代码:

public class Test {
    
 
    public static void main(String[] args) {
    
 
        // 测试数据 
        int[][] a = {
   {
   5, 2, 4}, {
   3, 8, 2}, {
   6, 0, 4}, {
   0, 1, 6}}; 
        int[][] b = {
   {
   2, 4}, {
   1, 3}, {
   3, 2}}; 
 
        // 获得矩阵相乘的结果 
        int[][] c = Test.matrixMultiplication(a, b); 
 
		// 输出矩阵相乘的结果 
        if (c != null) {
    
         
            // 遍历相乘之后的矩阵 
            for (int i = 0; i < c.length; i++) {
    
                for (int j = 0; j < c[i].length; j++) {
    
                    System.out.print(c[i][j] + " "); 
                } 
                System.out.println(); 
            } 
        } else {
    
            System.out.println("a矩阵的列数和b矩阵的行数不相等,无法进行矩阵相乘"); 
        } 
    } 
 
    /** 
     * 获取矩阵乘积 
     * 
     * @param a 矩阵1 
     * @param b 矩阵2 
     * @return 矩阵乘积 
     */ 
    public static int[][] matrixMultiplication(int[][] a, int[][] b) {
    
 
        // 矩阵相乘的规定是:第一个矩阵的列数需要等于第二个矩阵的行数,所以进行本次判断 
        if (a[0].length != b.length) {
    
 
            return null; 
        } 
 
        // 以下数据是矩阵相乘中需要用到的,其中x是a矩阵的行数,y是b矩阵的列数,z是a矩阵的列数,同时也是b矩阵的行数 
        int x = a.length; 
        int y = b[0].length; 
        int z = b.length; 
 
        // 行数等于a矩阵的行数,列数等于b矩阵的列数 
        int[][] c = new int[x][y]; 
 
        // i代表a矩阵的行数,j代表b矩阵的列数,k代表a矩阵的列数,也代表b矩阵的行数 
        for (int i = 0; i < x; i++) {
    
            for (int j = 0; j < y; j++) {
    
                for (int k = 0; k < z; k++) {
    
 
                    // 让a矩阵的每一行数据相应乘以b矩阵的每一列数据,然后加和 
                    c[i][j] += a[i][k] * b[k][j]; 
                } 
            } 
        } 
 
        return c; 
    } 
} 

结果:

24 34  
20 40  
24 32  
19 15  

发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

1-1 采用Java语言声明复数类---》数据结构(Java版)(第4版)实验1:算法设计与分析知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。