将矢量和矩阵相乘

时间:2017-03-08 05:16:04

标签: java

我的目标是将矩阵a和矢量vec相乘:

public static int[] vectorProduct(int[][] a, int[] x){
    if(x.length != a[0].length)
        throw new RuntimeException("Illegal matrix dimensions.");
    int [] y = new int[a.length];
    for(int i = 0; i<y.length;i++){
        int sum=0;
        for(int j = 0; j < a[0].length; j++){
            sum+= a[i][j] * x[j];
        }
    }
    return y;
}

我的主要课程如下:

public static void main(String[] args){
    int [][] d = { {1,2,3},{1,2,3},{1,2,3}};
    int [] vec = { 1,1,1 };

    System.out.println("Vector product of matrix A and vecor x: ");
    int[] v = MatMath.vectorProduct(d, vec);
    print(v);
}

我应该得到[3,6,9],但我得到[0,0,0]作为我的输出。我做错了什么?

3 个答案:

答案 0 :(得分:3)

您永远不会向y数组

插入任何内容
int [] y = new int[a.length];
for(int i = 0 ; i < y.length ; i++){
    int sum = 0;
    for(int j = 0 ; j < a[0].length ; j++){
        sum += a[i][j] * x[j];          
    }
    y[i] = sum;
}
return y;

答案 1 :(得分:1)

  

我做错了什么?

您根本没有为int array y分配任何价值。

  

我应该得到[3,6,9],但我得到[0,0,0]作为我的输出

是的,因为默认情况下

的所有元素
 int

数组正在被0

组合

答案 2 :(得分:0)

您需要为数组y -

的索引赋值
for(int i = 0; i<y.length;i++){
    int sum=0;
    for(int j = 0; j < a[0].length; j++){
        sum+= a[i][j] * x[j];
    }
    y[i] =sum; //this should help you assign the values
}