二维数据练习--矩阵的加法和乘法

Posted superdrew

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维数据练习--矩阵的加法和乘法相关的知识,希望对你有一定的参考价值。

数组的练习示例展示:

package arrayList;
/**
 * 矩阵的集中运算法则:求和,求积,求逆矩阵,转置矩阵......
 * @author Drew
 *
 */
public class Arrays {
    /**
     * 两个二维数组(矩阵)求和。
     * @param a 矩阵(二维数组)
     * @param b 矩阵(二维数组)
     * @return  返回一个矩阵(二维数组)
     */
    public static int[][] add(int [][] a,int [][] b) {
        int [][] c = new int[a.length][b.length];
        for(int i = 0; i<c.length; i++) {
            for(int j = 0; j < c.length; j++) {
                c[i][j] = a[i][j] + b[i][j];
            }
        }
        return c;
    }
    /**
     * 直接打印出每个矩阵的值
     * @param arr
     */
    public static void print(int [][] arr) {
        for(int i = 0; i < arr.length; i++) {
            for(int j = 0; j < arr.length; j++) {
                    System.out.print(arr[i][j] + " ");//输出每一个数组中的值
            }
            System.out.println();//将数组按行输出。
        }
    }
    
    /**
     * 矩阵的乘法
     * @param a  矩阵(二维数组)
     * @param b  矩阵(二维数组)
     * @return  返回一个矩阵(二维数组)
     */
    public static int[][] multiplication(int [][] a,int [][] b) {//矩阵的乘法运算法则有问题。见Matrix.java的具体案例。
        int[][] c = new int[a.length][b.length];
        for(int i = 0; i<c.length; i++) {
            for(int j = 0; j < c.length; j++) {
                c[i][j] = a[i][j]*b[i][j];
            }
        }
        return c;
    }
    
    /**
     * 主函数方法,用于测试矩阵的运算法则。
     * @param args
     */
    public static void main(String[] args) {
        int [][] a = {{1,2},
                     {3,4}};
        int [][] b = {{10,20},
                      {30,40}};
        System.out.println("--------矩阵a");
        print(a);
        System.out.println("--------矩阵b");
        print(b);
        System.out.println("============数组的基本运算法则:==============");
        System.out.println("--------矩阵加法----------");
        int [][] c = add(a, b);
        print(c);
        System.out.println("--------矩阵乘法----------");
        int [][] d = multiplication(a, b);
        print(d);
        
        /*int [][] c = new int[2][2];//二阶矩阵(Matrix)
        for(int i = 0; i<c.length; i++) {
            for(int j = 0; j < c.length; j++) {
                c[i][j] = a[i][j] + b[i][j];
                System.out.print(c[i][j] + " ");
            }
        }*/
        
        
        //多维数组很少见
        /*int [][][][] b = new int [1][2][2][1];
        b[0][0][0][0] = 34;
        b[0][0][1][0] = 45;
        for(int i = 0; i<b.length; i++) {
            for(int j = 0; j < b.length; j++) {
                for(int c = 0; c < b.length; c++) {
                    for(int f = 0; f < b.length; f++) {
                        System.out.println(b[i][j][c][f] + " ");
                    }
                }
            }
        }*/
    }

}

结果展示:

这是一个小小的二维数组实例展示!你可以自己尝试着去完成矩阵的转置和求逆矩阵。

以上是关于二维数据练习--矩阵的加法和乘法的主要内容,如果未能解决你的问题,请参考以下文章

定义一个Matrix类,实现矩阵的加法和乘法

1571:基础练习 矩阵乘法

在 SYCL 中实现矩阵加法和乘法

在 SYCL 中实现矩阵加法和乘法

矩阵乘法 - C

数据结构22:数组和广义表