La serialization des matrices

Les matrices sont seriablisable si les éléments de la matrice les sémantiques de la matrice le sont.

Les matrices on un numero serialVersionUID qui ne change jamais. Mais elles ont en plus un matrixVersionUID qui varie lorsque les champs changes. De cette façon on peut modifier la lecture du flux en fonction de matrixVersionUID. La valeur de matrixVersionUID est la première chose que l’on ecrit dans le flux.

Il faut aussi faire le meme travail de serialisation sur BasicMatrix et DimensionConverter.

Serialisation

Dans MatrixNDImpl et SubMatrix

ecriture

  • matrixVersionUID (long)
  • nom (String)
  • defaultValue (double)
  • dimensions (int[])
  • dimNames (String[])
  • semantics (List[])

pour MatrixNDImpl ecriture

  • matrix (BasicMatrix)

pour SubMatrix ecriture

  • matrix (MatrixND)
  • converter (DimensionConverter)

Deserialisation

Dans MatrixNDImpl et SubMatrix

lecture

  • matrixVersionUID

La suite de la lecture peut-etre conditionné a la valeur de matrixVersionUID

  • nom
  • defaultValue (double)
  • dimensions (int[])
  • dimNames (String[])
  • semantics (List[])

pour MatrixNDImpl lecture

  • matrix (BasicMatrix)

pour SubMatrix lecture

  • matrix (MatrixND)
  • converter (DimensionConverter)

Il faut ensuite recreer une factory, un dimHelper.

La factory est recreer en fonction du type de Vector utilisé (FloatVector, FloatBigVector, …).

Pour MatrixNDImpl: matrix.data.getClass() Pour SubMatrix: [matrix]*.matrix.data.getClass()

Pour SubMatrix il faut peut-etre passé plusieurs MatrixND avant d’arriver a la BasicMatrix sur lequel on peut prendre le vector.