J'essaie d'utiliser des filtres MathNet pour appliquer un filtre passe-bande à un signal; J'utilise la méthode MathNet.Filtering.OnlineFiter.CreateBandpass(..)
, pour être précis. Le problème est que je n'obtiens pas les résultats attendus et que les paramètres de la méthode me rendent confus. J'ai un signal échantillonné à 1Khz, et je veux tout enlever en dehors de la plage de 4 à 6 Hz. Quelle est la bonne façon d'appeler la méthode CreateBandpass(..)
?MathNet.Filtering Bandpass paramètres
Modifier
Ce code, comme demandé dans un commentaire:
OnlineFilter bandPass = CreateBandpass(ImpulseResponse.Finite, samplingRate, 3, 7);
postProcessedData = bandPass.ProcessSamples(preProcessedData);
La source est une sinusoïde exactement 5 Hz avec un bruit de fréquence relativement élevée (comme 30 -70 hz); l'amplitude du signal est d'environ 20 crête-crête, centrée sur 0 (donc -10 à +10). Le signal filtré est un signal sinusoïdal à 5 Hz, pas de bruit et une amplitude, crête à crête, de 2,1
P.S.
Cela se produit également avec une onde de test. Si a générer une onde sinusoïdale pure (quelle que soit la fréquence) et la filtrer autour de sa fréquence, j'obtiens une sinusoïde de même fréquence et une amplitude totalement indépendante. Par contre si je FFT (toujours en utilisant MathNet) l'onde et enlevez les composants qui ne m'intéressent pas, je peux alors reconstruire l'onde à l'amplitude attendue et la nettoyer totalement du bruit.
j'obtenir des résultats assez décent. Qu'est-ce qui n'est pas bon pour toi? Postez votre code. – jsanalytics