Accueil > Community > FPScript > calculate the true RMS value > Reply To: calculate the true RMS value

#21272
Bernhard KantzBernhard Kantz
Participant

The code seems above seems to be mangled, maybe in the transition to the new web site. The FPScript formula below should do the job.

//Recherche des index où le signal d'entrée passe à zéro (orientation positive) afin d'isoler les périodes du signal
Dim PMax = Maximum(Acceleration)
Dim Idx = LevelCrossings(Acceleration, 0.0, 0.05 * PMax, EVENT_POSITIVE, EVENT_INDEX)

//Calcul des valeurs RMS
//Code optimisé pour un calcul plus rapide
//Ici on n'étend pas les variables time et rms dans la boucle for avec l'opérateur :=
//On définit au préalable la taille de time et rms et on les remplies dans la boucle For
Dim N = NumberOfRows(idx)
Dim rms  = AdjustUnit(? # N-1, Acceleration)
For k = 0 To N - 2 Do
    rms[k]  = Mean(Acceleration[Idx[k], Idx[k+1]], MEAN_SQUARE)
End

Return Signal(rms, Acceleration.X[Idx])