Acho que entendi…
No caso leio a dimensão, veja o meu código: [code]
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadFile {
/****************************************************
* Metodo criado para receber as duas Matrizes 4D
****************************************************/
public static double[][][][] criaMatriz4D(int dim1, int dim2, int dim3, int dim4, DataInputStream input) throws IOException{
double[][][][] matriz = new double[dim1][dim2][dim3][dim4];
for (int l = 0; l < dim4; l++) {
for (int k = 0; k < dim3; k++) {
for (int j = 0; j < dim2; j++) {
for (int i = 0; i < dim1; i++) {
matriz[i][j][k][l] = input.readDouble();
}
}
}
}
return matriz;
}
/****************************************************
* Metodo criado para receber as duas Matrizes 3D
****************************************************/
public static float[][][] criaMatriz3D(int dim2, int dim3, int dim4, DataInputStream input) throws IOException{
float[][][] matriz = new float[dim2][dim3][dim4];
for (int k = 0; k < dim4; k++) {
for (int j = 0; j < dim3; j++) {
for (int i = 0; i < dim2; i++) {
matriz[i][j][k] = input.readFloat();
}
}
}
return matriz;
}
public static void main(String args[]) throws IOException {
// Realizando a leitura do arquivo binário
DataInputStream input = new DataInputStream(new FileInputStream(new File("C:/Documents and Settings/Projeto_Estudo/data.dtb")));
// Lendo as dimensões gravadas no binário
int dim1 = 4; // dimensão fixa
int dim2 = input.readInt(); // dimensão lida do arquivo binário
int dim3 = input.readInt(); // dimensão lida do arquivo binário
int dim4 = input.readInt(); // dimensão lida do arquivo binário
// Exibo os valores de cada dimensão, só para verificar se esta "pegando" valor correto
System.out.println("Dimensão1= " +dim1);
System.out.println("Dimensão2= " +dim2);
System.out.println("Dimensão3= " +dim3);
System.out.println("Dimensão4= " +dim4);
// Guardo os valores das respectivas matrizes
double [][][][] mat_modImag = criaMatriz4D(4, dim2, dim3, dim4, input);
double [][][][] mat_conjImag = criaMatriz4D(4, dim2, dim3, dim4, input);
float [][][] mat_modScatter = criaMatriz3D(dim2, dim3, dim4, input);
float [][][] mat_conjScatter = criaMatriz3D(dim2, dim3, dim4, input);
// Fechando a leitura
input.close();
// Imprime as posições das matrizes
System.out.println(mat_modImag[0][0][16][16]);
System.out.println(mat_conjImag[0][0][19][16]);
System.out.println(mat_modScatter[1][2][1]);
System.out.println(mat_conjScatter[14][16][3]);
}
// Metodo para imprimir as matrizes
private static void imprimeMatriz(double[][][][] matriz) {
System.out.println("----");
for (int i = 0; i < matriz.length; i++) {
for (int j = 0; j < matriz[i].length; j++) {
for (int k = 0; k < matriz[i][j].length; k++) {
System.out.print(" ");
for (int l = 0; l < matriz[i][j][k].length; l++) {
//System.out.print(matriz[i][j][k][l] + " ");
}
System.out.println();
}
System.out.println("--");
}
System.out.println("----");
}
}
}[/code]
Então se quero somar os elementos da dimensão [dim4] da matriz criaMatriz4D. Daí então ficaria assim: Pois nesse caso leio a dimensão de um arquivo.
for (int l = 0; l < dim4; l++) {
sum += arr[i][j][k][dim4];
System.out.print(arr[i][j][k][dim4] +" ");
}
System.out.println(sum);