2017-03-08 165 views
0

我的目标是乘矩阵和向量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]作为我的输出。我究竟做错了什么?

+2

你永远不会做的变量'sum'什么。你可能应该把它放在你的'y'数组中,因为你要返回它 – Gab

回答

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; 
+0

当我修复它,我得到[6,6,6]这不是正确的向量。正确的矢量是[3,6,9]。 hmm – onepunchman

+0

@onepunchman您正在总结'a'中的行。在[a] [i] [j]'sum + = a [j] [i] * x [j]中总结列开关'i'和'j';' – Guy

+0

nvm,它的运行良好!谢谢:) – onepunchman

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 
} 
+0

请原谅downvote吗? – nullpointer

1

我在做什么错?

你根本没有给int array y分配任何值。

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

呀,因为默认情况下的

所有元素
int 

阵列正在assinged到0