我們有MATLAB中的repmat(arr,2,1,2)
方法產生的格式是: arr = [6,3,9,0];
農產品repmat()方法用java
L(:,:,1) =
6 3 9 0
6 3 9 0
L(:,:,2) =
6 3 9 0
6 3 9 0
,我試圖生產相同的格式中的Java代碼是
class test24{
public static void main (String [] args) {
int[] arr = {6,3,9,0};
test24 test = new test24();
System.out.println(Arrays.deepToString(test.repmat(arr,2,1,2)));
}
public static int[][][] repmat (int[] array, int rows, int columns, int depth)
{
int arrayColumns = array.length;
int resultColumns = arrayColumns * columns;
int[][][] result = new int[rows][resultColumns][depth];
int z = 0;
for (int d = 0; d < depth; d++)
{
for (int r = 0; r < rows; r++)
{
for (int c = 0; c < resultColumns; c++)
{
result[r][c][d] = array[z++];
if (z >= arrayColumns)
{
z = 0;
}
}
}
}
return result;
}
}
來自java代碼的結果是:
[[6,6],[3,3],[9,9],[0,0]],[[[ 6,6],[3,3],[9,9],[0,0]] ???
請任何建議
沒有什麼說Java不會將數組存儲在連續的內存塊中。 Iliffe矢量絕對可以存儲在連續的內存中。當通過指針訪問時,例如可以在C中通過遞增指針來訪問數組('int i [2,2] = {{1,2},{3,4}}; printf(「%d」,i [3])'哪裏'我[3] == *(i + 3)')。這並不是說Java具有與Iliffe矢量相同的實現。問題應該是列主要與行主要的順序,另一個問題是多維數組需要比C更多的訪問數據的方式。 – patrik
@patrik問題是否行優先排序,然後'結果[d] [R] [C] =陣列[Z ++];'還在修復 – Dan
這當然是真的:) – patrik