在我的第一个声明中,它打印出hx,
的值matrix hx = X.times(theta);
System.out.println("Value of hx: ");
for (int i =0; i< hx.getRowdimension(); i++) {
for (int j = 0; j< hx.getColdimension(); j++) {
System.out.println(hx.getArray()[i][j]);
}
}
但是在我的第二个语句中,log_hx会覆盖hx的值。为什么这样以及如何摆脱它?
matrix log_hx = MathUtility.matrixLog(hx);
System.out.println("Value of hx: ");
for (int i =0; i< hx.getRowdimension(); i++) {
for (int j = 0; j< hx.getColdimension(); j++) {
System.out.println(hx.getArray()[i][j]);
}
}
这是我的MathUtility类:
public final class MathUtility {
public static matrix matrixLog(matrix B) {
int m = B.getRowdimension();
int n = B.getColdimension();
double[][] C = B.getArray();
for (int i = 0; i< m; i++) {
for (int j = 0; j< n; j++) {
C[i][j] = Math.log(C[i][j]);
}
}
return new matrix(C);
}
}
答案 0 :(得分:0)
将B.getArray();
替换为new double[m][n]
,这样您就不会重复使用旧数组了。
答案 1 :(得分:0)
如果重写getArray()
类的matrix
方法以返回基础数组的副本而不是数组本身,那么它也应该有效。
另外:请坚持编码惯例。您的课程应该被称为Matrix
。