Contenu principal

Remove High-Frequency Noise from Gyroscope Data

R2026b

This example shows how to remove the high-frequency outliers from a streaming signal using the dsp.MedianFilter System object.

Use the dsp.MatFileReader System object to read the gyroscope MAT file. The gyroscope MAT file contains 3 columns of data, with each column containing 7140 samples. The three columns represent the X-axis, Y-axis, and Z-axis data from the gyroscope motion sensor. Choose a frame size of 714 samples so that each column of the data contains 10 frames. The dsp.MedianFilter System object uses a window length of 10. Create a timescope object to view the filtered output.

reader = dsp.MatFileReader(SamplesPerFrame=714,...
    Filename="LSM9DS1gyroData73.mat",...
    VariableName="data");
medFilt = dsp.MedianFilter(10);
scope = timescope(NumInputPorts=1,...
    SampleRate=119,...
    YLimits=[-300 300],...
    ChannelNames={"Input","Filtered Output"},...
    TimeSpanSource="Property",...
    TimeSpan=60,ShowLegend=true);

Filter the gyroscope data using the dsp.MedianFilter System object. View the filtered Z-axis data in the time scope.

for i = 1:10
    gyroData = reader();
    filteredData = medFilt(gyroData);
    scope([gyroData(:,3),filteredData(:,3)]);
end

The original data contains several outliers. Zoom in on the data to confirm that the median filter removes all the outliers.

See Also

Topics