为什么创建空白矩阵会返回null而不是0.0?

Lar*_*rry -1 java null matrix convolution conv-neural-network

我有一个Java方法fill0s(),它将一个较小的矩阵输入到一个较大的矩阵中,据说填充了0:

public class PoolingFunctions {

    // Fill needed spaces with 0
    public static Double[][] fill0s(Double[][] image, int filter_size){
        int columns_remaining = filter_size - (image[0].length%filter_size);
        int rows_remaining = filter_size - (image.length%filter_size);
        // CREATE A MATRIX: HERE LIES THE PROBLEM: //////////////////////////////
        Double [][] blank_matrix = new Double [(image.length)+columns_remaining][(image[0].length)+rows_remaining];
            for (int i = 0; i<image.length; i++) {
                for (int j = 0; j<image[i].length; j++) {
                    blank_matrix[i][j] = image[i][j];
                }
            }

        return blank_matrix;
    }
}
Run Code Online (Sandbox Code Playgroud)

并在调用此方法后:

public class MainPooling{
    public static void main(String[] args) {
        Double[][] image =  {   {1.0,1.0,1.0,1.0},
                                {1.0,1.0,1.0,1.0},
                                {1.0,1.0,1.0,1.0},
                                {1.0,1.0,1.0,1.0}
                            };

        Double[][] formatted_image;
        formatted_image = PoolingFunctions.fill0s(image,3);
        TestMatricesJava.print2dMatrix(formatted_image);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

1.0 1.0 1.0 1.0 null null 
1.0 1.0 1.0 1.0 null null 
1.0 1.0 1.0 1.0 null null 
1.0 1.0 1.0 1.0 null null 
null null null null null null 
null null null null null null 
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么函数返回null而不是0.0?

Bil*_*ard 8

由于Double是一个类,对于数组中的默认值的Doublenull,不为0.0.

您需要使用基元类型double或显式初始化矩阵.