乘以向量和矩阵
我的目标是乘矩阵和向量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]作为我的输出。我究竟做错了什么?
你永远不插入任何东西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;
当我修复它,我得到[6,6,6]这不是正确的向量。正确的矢量是[3,6,9]。 hmm – onepunchman
@onepunchman您正在总结'a'中的行。在[a] [i] [j]'sum + = a [j] [i] * x [j]中总结列开关'i'和'j';' – Guy
nvm,它的运行良好!谢谢:) – onepunchman
您需要将值分配给数组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
}
请原谅downvote吗? – nullpointer
我在做什么错?
你根本没有给int array y
分配任何值。
我应该得到[3,6,9],但我发现[0,0,0]作为我的输出
呀,因为默认情况下的
所有元素int
阵列正在assinged到0
你永远不会做的变量'sum'什么。你可能应该把它放在你的'y'数组中,因为你要返回它 – Gab