java中矩阵/数组的乘法

java中矩阵/数组的乘法,java,Java,嗨,我有这个Java中矩阵乘法的代码。这是工作(没有错误),但给我的乘法矩阵的错误答案。要相乘的两个矩阵已正确定义。代码如下: // position_new = multiply ( transformation (3x3) * transpose(3x1) ) int rows=3, columns=1; double multiply[][] = new double[rows][columns]; double sum; for (int k = 0; k < columns;

嗨,我有这个Java中矩阵乘法的代码。这是工作(没有错误),但给我的乘法矩阵的错误答案。要相乘的两个矩阵已正确定义。代码如下:

// position_new = multiply ( transformation (3x3) * transpose(3x1)  )
int rows=3, columns=1;
double multiply[][] = new double[rows][columns];
double sum;

for (int k = 0; k < columns; k++) {
    for (int e = 0; e < rows; e++) {
        sum = 0;
        for (int f = 0; f < columns; f++) {
            sum = sum + transformation[e][f] * transpose[f][k];
        }
        multiply[e][k] = sum;
    }
}
System.out.println("Multiplied Matrix:-");
for (int m = 0; m < rows; m++) {
    for (int n = 0; n < columns; n++)
        System.out.print(multiply[m][n] + "\t");
    System.out.print("\n");
} 
//位置新=乘法(变换(3x3)*转置(3x1))
int行=3,列=1;
双重乘法[][]=新的双重[行][列];
双和;
for(int k=0;k

非常感谢您事先提供的帮助。

您的列/行变量不正确,应该是这样的:

// position_new = multiply ( transformation (mxn) * transpose(nxp)  )
int m = 3, n = 3, p = 1;
double multiply[][] = new double[m][p];
double sum;

for (int k = 0; k < p; k++) {
    for (int e = 0; e < m; e++) {
        sum = 0;
        for (int f = 0; f < n; f++) {
            sum = sum + transformation[e][f] * transpose[f][k];
        }
        multiply[e][k] = sum;
    }
}
System.out.println("Multiplied Matrix:-");
for (int i = 0; i < m; i++) {
    for (int j = 0; j < p; j++)
        System.out.print(multiply[i][j] + "\t");
        System.out.print("\n");
}  
//位置新=乘法(转换(mxn)*转置(nxp))
int m=3,n=3,p=1;
双乘[][]=新的双乘[m][p];
双和;
对于(int k=0;k

在您给出的示例中,您仅在转换矩阵的第一列上循环(因为列==1),这意味着您正在执行1x3*3x1矩阵乘法。:)

看起来有些代码丢失了。什么是转置[0]。长度?很抱歉,我对java有点陌生。我已经定义了转置矩阵,但当我粘贴代码时,它会显示“标记上的语法错误”。“这个标记后面应该有一个类”对不起,我的不好,我已经整理好它,以便再次使用变量@user3419155,该行获取第二个数组维度的长度。您可能缺少作为变量的转置。您可以添加一个模型:
int-transformation[][]=newint[m][n];变换[0][0]=7;变换[0][1]=5;变换[0][2]=2;变换[1][0]=9;变换[1][1]=4;变换[1][2]=8;变换[2][0]=2;变换[2][1]=4;变换[2][2]=3;int转置[][]=新的int[n][p];转置[0][0]=4;转置[1][0]=5;转置[2][0]=1给予:55、64、31
public void Miltiply(){
    // position_new = multiply ( transformation (3x3) * transpose(3x1)  )
    int rows=3, columns=1;
    int transformation[][]={{1,2,3},{1,1,1},{2,2,2}};
    int transpose[][]={{1},{1},{1}};
    double multiply[][] = new double[rows][columns];
    double sum;

    for (int k = 0; k < transpose[0].length; k++) {
        for (int e = 0; e < transformation.length; e++) {
            sum = 0;
            for (int f = 0; f < transpose.length; f++) {
                sum = sum + transformation[e][f] * transpose[f][k];
            }
            multiply[e][k] = sum;
        }
    }
    System.out.println("Multiplied Matrix:-");
    for (int m = 0; m < rows; m++) {
        for (int n = 0; n < columns; n++)
            System.out.print(multiply[m][n] + "\t");
        System.out.print("\n");
    } 
}
6.0 
3.0 
6.0