Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eu_Nana

Somar Elementos De Uma Dimensão De Matriz

Recommended Posts

Olá pessoal,

 

Estou tentando realizar a soma de todos os elementos de apenas uma

dimensão de uma matriz, criei um metodo para realizar tal soma, no

entanto não sei oq esta acontecendo, pelo que percebi da forma que fiz

parece que nem esta entrando dentro do metodo. Veja meu codigo:

 

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;

}

       /******************************************************
        * Metodo para realizar somatorio das matrizes de Imag
        ******************************************************/
        public static double soma(double[][][][] mat_modImag, int
dim1, int
dim2, int dim3, int dim4){
                System.out.println("Aqui =" );
                  int somatorio = 0;
                   for(int l = 0; l < dim4; l++){

                       somatorio += mat_modImag[dim1][dim2][dim3][l];
                       System.out.println("Aqui =");
                   }

                   System.out.println("a soma eh =" +somatorio);
                   return somatorio;
       }

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/Web/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("----");
               }
       }

}

 

 

Inseri uns print's dentro do metodo, porém nenhum esta sendo exibido,

debuguei o código, inseri um breakpoint dentro do metodo, porém a

única coisa que exibe é oq segue abaixo:

 

<terminated>ReadFile [Java Application]

<disconnected>ReadFile at localhost:2138

<terminated, exit value: 0>C:\Arquivos de programas\Java\jre6\bin

\javaw.exe (09/12/2011 13:50:44)

 

Pelo que entendi tem relação com a soma, não realizou a soma. Estou

certa?

 

No entanto não estou entendendo pq não esta realizando o calculo.

 

OBS: Minha matriz é do seguinte tipo: DOUBLE = Array[4, 16, 32,

32], ou seja, possui 4Dimensões, preciso somar os elementos da

dimensão4 por exemplo.

 

Obrigada,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que não faz sentido usar dim4 como limitador no for, se você usa dim1, dim2, dim3 e soma todos os valores dessa matriz (lembre-se que em java não existe matriz multidimensional, apenas matrizes de matrizes), então o limitador deveria ser o length da ultima matriz.

 

for(int l = 0; l <  mat_modImag[dim1][dim2][dim3].length; l++){

  somatorio += mat_modImag[dim1][dim2][dim3][l];
  System.out.println("Aqui =");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.