二维数组的归一化
Normalization of 2D array
我有一个尺寸为 365x28 的二维矩阵(即 365 行和 28 列)。我正在尝试使用以下代码对此进行规范化:
public static void main(String args[]) throws Exception {
double[][] X = new double [365][28];
double[][] X_min = new double [1][28];
double[][] X_max = new double [1][28];
double[][] X_norm = null;
X_norm = normalize(X, X_min, X_max);// error in this line
public static double[][] normalize(double[][] ip_matrix, double[][] min_bound, double[][] max_bound)
{
double[][] mat1 = ip_matrix;
double[][] norm = new double[mat1.length][mat1[0].length];
for (int i = 0; i < mat1.length; i++)
{
for (int j = 0; j <= mat1[i].length; j++)
{
norm[i][j] = (mat1[i][j] - min_bound[i][j] / (max_bound[i][j] - min_bound[i][j]));// error in this line
}
}
return norm;
}
}
但是当我 运行 这时我得到一个索引错误。我知道 min_bound[i][j] 和 max_bound[i][j] 有问题。但我不知道如何纠正这个问题。谁能帮我解决这个问题?提前致谢。
Error: exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
for (int i = 0; i < mat1.length; i++)
我去365你打
norm[i][j] = (mat1[i][j] - min_bound[i][j] / (max_bound[i][j] - min_bound[i][j]));
其中 min_bound 是 1x28
因此,您得到 indexoutofbounds 异常
好吧,如果你仔细想想,你的问题就很明显了。记住数组从 0 开始索引。
因此,在使用 var int "i" 的第一个 for 循环中规范化的方法中,它上升到 365,因为您检查二维数组 X 的长度,其中 min_bound 和 max_bound 只有大小为 1 和 28。Think
假设 min_bound 和 max_bound 总是 [1][(some value)]
for (int i = 0; i < mat1.length - 1; i++) {
for (int j = 0; j <= mat1[i].length - 1; j++) {
norm[i][j] = (mat1[i][j] - min_bound[0][j]
/ (max_bound[0][j] - min_bound[0][j]));// error in this
// line
}
}
我有一个尺寸为 365x28 的二维矩阵(即 365 行和 28 列)。我正在尝试使用以下代码对此进行规范化:
public static void main(String args[]) throws Exception {
double[][] X = new double [365][28];
double[][] X_min = new double [1][28];
double[][] X_max = new double [1][28];
double[][] X_norm = null;
X_norm = normalize(X, X_min, X_max);// error in this line
public static double[][] normalize(double[][] ip_matrix, double[][] min_bound, double[][] max_bound)
{
double[][] mat1 = ip_matrix;
double[][] norm = new double[mat1.length][mat1[0].length];
for (int i = 0; i < mat1.length; i++)
{
for (int j = 0; j <= mat1[i].length; j++)
{
norm[i][j] = (mat1[i][j] - min_bound[i][j] / (max_bound[i][j] - min_bound[i][j]));// error in this line
}
}
return norm;
}
}
但是当我 运行 这时我得到一个索引错误。我知道 min_bound[i][j] 和 max_bound[i][j] 有问题。但我不知道如何纠正这个问题。谁能帮我解决这个问题?提前致谢。
Error: exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
for (int i = 0; i < mat1.length; i++)
我去365你打
norm[i][j] = (mat1[i][j] - min_bound[i][j] / (max_bound[i][j] - min_bound[i][j]));
其中 min_bound 是 1x28
因此,您得到 indexoutofbounds 异常
好吧,如果你仔细想想,你的问题就很明显了。记住数组从 0 开始索引。 因此,在使用 var int "i" 的第一个 for 循环中规范化的方法中,它上升到 365,因为您检查二维数组 X 的长度,其中 min_bound 和 max_bound 只有大小为 1 和 28。Think
假设 min_bound 和 max_bound 总是 [1][(some value)]
for (int i = 0; i < mat1.length - 1; i++) {
for (int j = 0; j <= mat1[i].length - 1; j++) {
norm[i][j] = (mat1[i][j] - min_bound[0][j]
/ (max_bound[0][j] - min_bound[0][j]));// error in this
// line
}
}