• java计算两个n阶矩阵相乘


    自己是个新手,研究java数据结构,看到两个n阶矩阵相乘的题目,自己就试着写了一个简单的demo,哪里有不好的地方,也希望大家多提提意见,直接上代码了:

    package com.shujujiegou01;

    public class JuZhenChengFa {
    // 计算两个N阶矩阵相乘
    public static void squareMult(int[][] a, int[][] b, int[][] c, int n) {
    for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
    c[i][j] = 0;
    for (int k = 0; k < n; k++) {
    c[i][j] += a[i][k] * b[k][j];
    }
    }
    }
    }

    // 打印矩阵
    public static void printArray(int a[][]) {
    for (int k = 0; k < a.length; k++) {
    for (int l = 0; l < a[k].length; l++) {
    // 打印每一个元素及其所在坐标位置
    System.out.print(a[k][l] + "-" + "(" + k + "," + l + ")" + ",");
    }
    System.out.println();
    }
    }

    // 矩阵行列互换
    public static void swapRowCloumn(int a[][]) {
    int num = a.length;

    //是为了方便自己调试,才这么定义的

    int e[][] = new int[num][num];
    for (int k = 0; k < num; k++) {
    for (int l = 0, x = a[k].length; l < x; l++) {
    // 打印每一个元素及其所在坐标位置
    e[k][l] = a[l][k];
    System.out.print(e[k][l] + "-" + "(" + k + "," + l + ")" + ",");
    }
    System.out.println();
    }
    }

    // 主函数测试
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int a[][] = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    int b[][] = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    int c[][] = new int[3][3];

    System.out.println("矩阵A:");
    printArray(a);
    System.out.println("互换行和列后的A矩阵:");
    swapRowCloumn(a);
    // printArray(a);
    System.out.println("矩阵B:");
    printArray(b);
    System.out.println("互换行和列后的A矩阵:");
    swapRowCloumn(b);
    // printArray(b);
    // 调用
    squareMult(a, b, c, 3);
    // 打印
    System.out.println("矩阵C:");
    printArray(c);

    // 调换过后计算的结果
    System.out.println("调换行和列的矩阵C:");
    swapRowCloumn(c);
    }

    }

    附上运行结果截图:

    标红的部分,个人感觉有问题,调用了行列互换方法了,按理来说应该计算c矩阵是按照行列互换后的A矩阵和B矩阵来计算的,应该直接得到红框的答案;但是计算出来发现还是根据旧的A,B矩阵的乘积来计算的。感觉哪里有问题,但是说不上来!!!

  • 相关阅读:
    Quartus 16.1 signaltap问题
    黑金AX301开发板视频图像处理:探索
    YOLO算法学习
    Ubuntu 16.04运行altera opencl sdk(AOCL)
    Ubuntu下quartus发现不到usb blaster的问题
    Ubuntu 16.04安装altera opencl sdk(AOCL)
    ZYNQ术语及缩写
    BinaryNet: Training Deep Neural Networks with Weights and ActivationsConstrained to +1 or −1
    卷积神经网络优化方法
    FINN: A Framework for Fast, Scalable Binarized Neural Network Inference_2016_CSCV
  • 原文地址:https://www.cnblogs.com/yaoruozi/p/8244606.html
Copyright © 2020-2023  润新知