-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

我设法解决了这个问题。

我多么希望图像的大小,我做了一个小函数来解决我的问题。

 public static int length(BufferedImage bi)
{
    int x;
    x=bi.getHeight()*bi.getWidth();
    return x;
}
于 2013-04-18T18:46:44.110 回答
-1

matlab的numel函数

n = numel(A) 返回数组 A 中的元素数 n。

你可以让你喜欢

int arraycount(int a[])
    {
    int counter;
    for(int i=0;i<a.length;i++)
    {
    counter++;
    }
    return counter;
    }
于 2013-04-18T17:11:00.863 回答
-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 回答