【发布时间】:2013-03-15 14:28:48
【问题描述】:
这是 Matlab 中定义的尺寸函数,如文档中所示:
m = size(X,dim) returns the size of the dimension of X specified by scalar dim.
1) 鉴于 X 是 java 中的单个数组,我将如何使用 Java 复制此方法。
【问题讨论】:
这是 Matlab 中定义的尺寸函数,如文档中所示:
m = size(X,dim) returns the size of the dimension of X specified by scalar dim.
1) 鉴于 X 是 java 中的单个数组,我将如何使用 Java 复制此方法。
【问题讨论】:
Matlab 只是将矩阵和 n 维数据线性存储在一个数组中。每个维度的大小与数组一起保存,因此当您进行非线性索引时,Matlab 知道要返回哪个元素(例如,A(3,5) 对于 5x5 矩阵,Matlab 知道它应该返回元素 A(23),即 3+(5-1)*5)。
因此,在 java 中,如果数组的大小为 N1xN2x...xNN,并且您正在寻找元素:(X1,X2,...,XN),那么您应该在数组中找到位置为:X1+(X2-1)*N1+(X3-1)*N1*N2+ ... +(XN-1)*NN-1*..*N1 的元素...
【讨论】:
如果您只想要数组的大小(任何维度),您有一个属性Array.length。
来自JLS:
public final 字段长度,包含组件个数 的数组。长度可以是正数或零。
例如:
int[] arr = new int[10];
int length = arr.length; //would obtain 10
【讨论】:
Java 中的数组只有一维:元素的数量。您只需使用属性Array.length 即可访问它。对于更复杂的容器(例如ArrayList),您通常可以使用成员函数size()。
int[] array = new int[5];
int arrayLength = array.length; //arrayLength == 5
ArrayList<int> arrayList = new ArrayList();
arrayList.add(1);
arrayList.add(2);
int arrayListLength = arrayLis.size(); //arrayListLength == 2
【讨论】: