-2

Javaでnumel(Matlabで利用可能な関数)を使用しようとしています。Javaで利用可能なこの関数の実装はありますか?

4

4 に答える 4

2

これがあなたがどのように働きたいかどうかはわかりませんnumelが、ここにはいくつかのバージョンがあります:

version1 - {{1},{2,3}} のような不規則なサイズの配列用

このメソッドは、配列のすべての要素をカウントして反復処理します。

public static int numel(Object array) {
    if (array == null)
        return 1;// I will count nulls as elements since new String[10] is
                    // initialized with nulls 
    int total = 1;
    if (array.getClass().isArray()) {
        total = 0;
        int length = java.lang.reflect.Array.getLength(array);
        for (int index = 0; index < length; index++) {
            total += numel(java.lang.reflect.Array.get(array, index));
        }
    }
    return total;
}

version2 - new String[2][3][4] のような通常サイズの配列用

このメソッドは、配列内の異なるレベルの最初の行のサイズのみを使用して、同じレベルの行が同じサイズであると仮定してサイズを取得します

public static int regularNumel(Object array) {
    if (array == null)
        return 1;
    int total = 1;
    if (array.getClass().isArray()) {
        int length = java.lang.reflect.Array.getLength(array);
        if (length > 0) {
            Object row = java.lang.reflect.Array.get(array, 0);
            if (row == null || !row.getClass().isArray())
                return length;
            else //now we know that row is also array
                return length * regularNumel(row);
        } else
            return 0;
    }
    return total;
}
于 2013-04-18T18:14:27.857 に答える
-1
class main{
    public static void main (String[] args){
    // numel returns the number of array elements, as does .length in Java.
    int[] testArr = {1,2,3,4,5,6,7,8};
    System.out.println(testArr.length);
    }
}
// Result: 8
于 2013-04-18T17:12:58.537 に答える