Supprimer le bruit haute fréquence dans les données mesurées
Cet exemple montre comment design un filtre passe-bas et l'utiliser pour supprimer le bruit haute fréquence dans les données mesurées. Le bruit à haute fréquence est dû aux composants d'un signal variant plus rapidement que le signal d'intérêt. La suppression du bruit à haute fréquence permet au signal d'intérêt d'être représenté de manière plus compacte et permet une analyse plus précise. Un filtre passe-bas est une technique courante pour éliminer le bruit haute fréquence dans un signal.
Lire les données
Le canal ThingSpeak ™ 12397 contient les données de la station météo MathWorks®, située à Natick, Massachusetts. Les données sont collectées et publiées sur ThingSpeak une fois par minute. Le champ 3 du canal contient des données d'humidité relative. Lisez les données à l'aide de la fonction thingSpeakRead
.
[humidity,time] = thingSpeakRead(12397,'NumPoints',8000,'Fields',3);
Filtre de conception
Un filtre est un processus qui supprime les composants indésirables d'un signal. Un filtre passe-bas est conçu pour laisser passer les composants à basse fréquence et bloquer les composants à haute fréquence dans un signal. DSP System Toolbox™ fournit plusieurs techniques pour définir un filtre passe-bas. Cet exemple conçoit un filtre à réponse impulsionnelle finie (FIR) du troisième ordre. La fréquence d'échantillonnage est d'une fois toutes les 60 secondes (Fs=1/60), car les données du canal 12397 sont téléchargées une fois par minute. Le filtre passe-bas conserve les composantes basse fréquence et atténue les composantes haute fréquence avec une période inférieure à 24 heures.
filtertype = 'FIR'; Fs = 1/60; N = 3; Fpass = 1/(24*60*60); Fstop = 1/(2*60*60); Rp = 0.5; Astop = 50; LPF = dsp.LowpassFilter('SampleRate',Fs,... 'FilterType',filtertype,... 'PassbandFrequency',Fpass,... 'StopbandFrequency',Fstop,... 'PassbandRipple',Rp,... 'StopbandAttenuation',Astop);
Traiter et envoyer les données à ThingSpeak
Traitez les données d'humidité relative à l'aide du filtre passe-bas et envoyez les données d'humidité filtrées à un canal ThingSpeak à l'aide de la fonction thingSpeakWrite
.
Output = step(LPF, humidity);
À l'aide de l'application MATLAB Analysis, vous pouvez écrire les données sur un canal. Si vous utilisez l'application MATLAB Visualizations, vous pouvez également ajouter un tracé des données. Changez le channelID
et le writeAPIKey
pour envoyer des données à votre canal.
channelID = 17504; writeAPIKey='23ZLGOBBU9TWHG2H'; thingSpeakWrite(channelID,Output,'Timestamps',time,'WriteKey',writeAPIKey); plot(time,humidity,time,Output); ylabel('Relative Humidity'); legend('Raw Data', 'Filtered Data');
Le graphique montre une réduction spectaculaire du bruit à haute fréquence.
Voir aussi
Fonctions
Sujets associés
- Compensate for Delay and Distortion Introduced by Filters (Signal Processing Toolbox)
- Filter Design and Analysis (DSP System Toolbox)