This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Remove High-Frequency Noise in Measured Data

This example shows how to design a low-pass filter and use it to remove high-frequency noise in measured data. High-frequency noise is due to components of a signal varying faster than the signal of interest. Removing high-frequency noise allows the signal of interest to be more compactly represented and enables more accurate analysis. A low-pass filter is a common techqnique for removing high-frequency noise in a signal.

Read Data

The ThingSpeak™ channel 12397 contains data from the MathWorks® weather station, located in Natick, Massachusetts. The data is collected and posted to ThingSpeak once per minute. Field 3 of the channel contains relative humidity data. Read the data using the thingSpeakRead function.

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

Design Filter

A filter is a process that removes unwanted components from a signal. A low-pass filter is designed to let lower frequency components pass through and block higher frequency components in a signal. DSP System Toolbox™ provides multiple techniques to define a low-pass filter. This example designs a third-order finite impulse response (FIR) filter. The sampling frequency is once every 60 seconds (Fs=1/60), as the data in channel 12397 is uploaded once per minute. The low-pass filter keeps low frequency components and attenuates high-frequency components with a period of less than 24 hours.

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

Process and Send the Data to ThingSpeak

Process the relative humidity data using the low-pass filter, and send the filtered humidity data to a ThingSpeak channel using the thingSpeakWrite function.

Output = step(LPF, humidity);

Using the MATLAB Analysis app, you can write the data to a channel. If you are using the MATLAB Visualizations app, you can also add a plot of the data. Change the channelID and the writeAPIKey to send data to your channel.

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

The plot demonstrates a dramatic reduction in high-frequency noise.

See Also

Functions

Related Topics