Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l’originale in inglese.

Rimuovere il rumore ad alta frequenza nei dati misurati

Questo esempio mostra come progettare un filtro passa-basso e utilizzarlo per rimuovere il rumore ad alta frequenza nei dati misurati. Il rumore ad alta frequenza è dovuto alle componenti di un segnale che variano più velocemente del segnale di interesse. La rimozione del rumore ad alta frequenza consente di rappresentare il segnale di interesse in modo più compatto e di effettuare analisi più accurate. Un filtro passa-basso è una tecnica comune per rimuovere il rumore ad alta frequenza da un segnale.

Leggi i dati

Il canale 12397 di ThingSpeak ™ contiene dati provenienti dalla stazione meteorologica MathWorks ®, situata a Natick, Massachusetts. I dati vengono raccolti e pubblicati su ThingSpeak una volta al minuto. Il campo 3 del canale contiene i dati sull'umidità relativa. Leggere i dati utilizzando la funzione thingSpeakRead.

[humidity,time] = thingSpeakRead(12397,'NumPoints',8000,'Fields',3);

Filtro di progettazione

Un filtro è un processo che rimuove i componenti indesiderati da un segnale. Un filtro passa-basso è progettato per far passare i componenti a bassa frequenza e bloccare quelli a frequenza più alta in un segnale. DSP System Toolbox ™ fornisce molteplici tecniche per definire un filtro passa-basso. Questo esempio progetta un filtro a risposta impulsiva finita (FIR) del terzo ordine. La frequenza di campionamento è di una volta ogni 60 secondi (Fs=1/60), poiché i dati nel canale 12397 vengono caricati una volta al minuto. Il filtro passa-basso trattiene i componenti a bassa frequenza e attenua quelli ad alta frequenza per un periodo inferiore alle 24 ore.

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);

Elaborare e inviare i dati a ThingSpeak

Elaborare i dati sull'umidità relativa utilizzando il filtro passa-basso e inviare i dati sull'umidità filtrati a un canale ThingSpeak utilizzando la funzione thingSpeakWrite.

Output = step(LPF, humidity);

Utilizzando l'app MATLAB Analysis, è possibile scrivere i dati su un canale. Se si utilizza l'app MATLAB Visualizations, è anche possibile aggiungere un grafico dei dati. Modifica channelID e writeAPIKey per inviare dati al tuo canale.

channelID = 17504;
writeAPIKey='23ZLGOBBU9TWHG2H';
thingSpeakWrite(channelID,Output,'Timestamps',time,'WriteKey',writeAPIKey);
plot(time,humidity,time,Output);
ylabel('Relative Humidity');
legend('Raw Data', 'Filtered Data');

Il grafico dimostra una drastica riduzione del rumore ad alta frequenza.

Vedi anche

Funzioni

Argomenti