Sommer les lignes d'une matrice dans un tableau

Fermé
new_at_ccm - Modifié par KX le 28/04/2016 à 19:23
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 29 avril 2016 à 22:25
Bonjour a tous;
Je suis débutant en java et j'aimerai avoir une fonction qui me permet de faire la somme des lignes d'une matrice et de les stocker dans un tableau.
J'ai essayé avec le code suivant, mais ça me génère l'erreur NaN(Not a Number) pour certaines valeurs dans mon tableau résultat et j'arrive pas a savoir la raison.
Voici le code que j'ai essayé:
public static double[] calculateSentenceSimilarityScore(
   double[][] resultMatrix) {
  double[] CumulSentenceScore = new double[resultMatrix.length];
  double[] FinalSentenceScore = new double[resultMatrix.length];
  
  for (int i = 0; i < resultMatrix.length; i++) {

   for (int j = 0; j < resultMatrix[i].length; j++) {

    CumulSentenceScore[i] =CumulSentenceScore[i]+ resultMatrix[i][j];

   }
   FinalSentenceScore[i] = CumulSentenceScore[i]/
      resultMatrix[0].length;
   

  }
  return FinalSentenceScore;
 }

Est ce que quelqu'un peut m'aider.
Merci d'avance.

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
28 avril 2016 à 19:29
Bonjour,

NaN est le résultat d'un calcul impossible, par exemple une division par 0, ce que tu peux faire dans ton code aux lignes 13/14.

Remarque : tout les calculs utilisant NaN donneront NaN en résultat.
0
Bonsoir;
Merci pour votre réponse KX, mais je voulais aussi savoir si le principe que j'ai utilisé (pour le calcul des sommes les lignes et le stockage dans un tableau) est correct ou pas?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
29 avril 2016 à 22:25
Ce n'est pas vraiment comme ça que je ferais mais en soit le principe est correct.

Personnellement je n'utiliserais pas de tableau CumulSentenceScore car on en n'a pas besoin, seul FinalSentenceScore nous intéresse.

Exemple :

public static double[] computeAverages(double[][] input) {
    if (input == null) {
        return null;
    }
    double[] result = new double[input.length];
    for (int i = 0; i < input.length; i++) {
        if (input[i] == null) {
            result[i] = Double.NaN;
            continue;
        }
        result[i] = 0;
        for (double value : input[i]) {
            result[i] += value;
        }
        result[i] /= input[i].length;
    }
    return result;
}
0