用java实现向量乘法

用java实现向量乘法,java,Java,目前,我正在尝试实现一种能够在java中使用向量和矩阵乘法的方法,现在我有了以下代码: package ai2; public class MyMatrix { int[][] alpha; int a; int b; int rowsB; int colsB; public MyMatrix(int a, int b) { this.a = a; this.b = b; alpha = new

目前,我正在尝试实现一种能够在java中使用向量和矩阵乘法的方法,现在我有了以下代码:

package ai2;

public class MyMatrix {
    int[][] alpha;
    int a;
    int b;
    int rowsB;
    int colsB;

    public MyMatrix(int a, int b) {
        this.a = a;
        this.b = b;
        alpha = new int[a][b];
        for (int k = 0; k < a; k++) {
            for (int l = 0; l < b; l++) {
                alpha[k][l] = 0;
            }
        }
    }

    public void insertValue(int o, int q, int z) {
        this.alpha[o][q] = z;
    }

    public void print() {
        for (int k = 0; k < a; k++) {
            for (int l = 0; l < b; l++) {
                System.out.print(this.alpha[k][l] + " ");
            }
            System.out.println();
        }
    }

    public void multiplyMatrix(MyMatrix B) {
        MyMatrix created = new MyMatrix(this.a, B.b);
        for (int m = 0; m < a; m++) {
            for (int k = 0; k < b; k++) {
                for (int l = 0; k < this.a; l++) {
                    myMatrixC[i][j] += myMatrixA[i][k] * myMatrixB[k][j];
                }
            }
        }
    }

    public static void main(String[] args) {
        MyMatrix a = new MyMatrix(2, 2);
        a.insertValue(0, 0, 1);
        a.insertValue(1, 1, 1);
        a.print();
        MyMatrix b = new MyMatrix(2, 2);
        b.insertValue(0, 0, 1);
        b.insertValue(1, 0, 1);
        // System.out.println(a);
    }
}

我需要一些想法来实现这些价值,或者可能需要一个更智能的实现,我不能使用java之外的包,感谢您的帮助

Java中的方括号仅用于访问数组元素

那里的语法将无法编译,并且无法以这种方式访问矩阵元素

为什么不在
MyMatrix
类中实现一个
getAlpha
getter,该getter返回
alpha
的值(或者更好的是,它的一个副本,以确保不变性)

然后,您可以使用matrixinstance.getAlpha()[k][l]引用它

您还可以简化一点,实现一个采用两个索引的
get
方法


这将允许您检查给定的索引是否在二维数组的边界内,并抛出一个自定义异常(或返回一些默认值),而不是您将得到的
ArrayIndexOutOfBoundsException

Java中的方括号仅用于访问数组元素

那里的语法将无法编译,并且无法以这种方式访问矩阵元素

为什么不在
MyMatrix
类中实现一个
getAlpha
getter,该getter返回
alpha
的值(或者更好的是,它的一个副本,以确保不变性)

然后,您可以使用matrixinstance.getAlpha()[k][l]引用它

您还可以简化一点,实现一个采用两个索引的
get
方法

这将允许您检查给定的索引是否在二维数组的边界内,并抛出一个自定义异常(或返回一些默认值),而不是您将得到的
ArrayIndexOutOfBoundsException

更换此线路

myMatrixC[i][j] += myMatrixA[i][k] * myMatrixB[k][j];

或者更好的办法是更换

MyMatrix created = new MyMatrix(this.a, B.b);

那你就可以了

C.alpha[i][j] += A.alpha[i][k] * B.alpha[k][j];
读起来更清楚一点

最后,无需在构造函数中使用0初始化alpha,这将自动发生。

替换此行

myMatrixC[i][j] += myMatrixA[i][k] * myMatrixB[k][j];

或者更好的办法是更换

MyMatrix created = new MyMatrix(this.a, B.b);

那你就可以了

C.alpha[i][j] += A.alpha[i][k] * B.alpha[k][j];
读起来更清楚一点


最后,无需使用构造函数中的0来初始化
alpha
,这会自动发生。

您的意思是
MyMatrixA.alpha[k][l]
?感谢您的评论,这是第一次投票,但没有什么值得支持的,非常感谢!你是说
MyMatrixA.alpha[k][l]
?谢谢你的评论,这是第一次投票,但没有什么结果,非常感谢!