java中矩阵/数组的乘法
嗨,我有这个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;
// 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