Sommer les lignes d'une matrice dans un tableau

new_at_ccm -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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.
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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
new_at_ccm
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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