Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione 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 a componenti di un segnale che variano più velocemente del segnale di interesse. La rimozione del rumore ad alta frequenza consente di rappresentare in modo più compatto il segnale di interesse e consente un'analisi più accurata. Un filtro passa-basso è una tecnica comune per rimuovere il rumore ad alta frequenza in un segnale.

Leggi i dati

Il canale ThingSpeak™ 12397 contiene i dati della 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 di 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 consentire il passaggio dei componenti a frequenza più bassa e bloccare i componenti a frequenza più alta in un segnale. DSP System Toolbox™ fornisce molteplici tecniche per definire un filtro passa-basso. Questo esempio progetta un filtro FIR (risposta all'impulso finito) del terzo ordine. La frequenza di campionamento è ogni 60 secondi (Fs=1/60), poiché i dati nel canale 12397 vengono caricati una volta al minuto. Il filtro passa-basso mantiene le componenti a bassa frequenza e attenua le componenti ad alta frequenza con un periodo inferiore a 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);

Elabora e invia i dati a ThingSpeak

Elabora i dati di umidità relativa utilizzando il filtro passa-basso e invia i dati di umidità filtrati a un canale ThingSpeak utilizzando la funzione thingSpeakWrite .

Output = step(LPF, humidity);

Utilizzando l'app MATLAB Analysis, puoi scrivere i dati su un canale. Se utilizzi l'app MATLAB Visualizations, puoi anche aggiungere un grafico dei dati. Cambia 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 mostra una drastica riduzione del rumore ad alta frequenza.

Vedi anche

Funzioni

Argomenti