Clear Filters
Clear Filters

How to remove spikes without modifying the dataset?

41 views (last 30 days)
Hi,
I need to remove spikes from a signal, but I don't want to modify the dataset. Using the medfilt1 function, it can remove spikes but it also interpolates all the dataset. As an example, given the following dataset
data = [1,2,10,1,3,2,1,2];
the function gives
>> medfilt1(data)
ans =
1 2 2 3 2 2 2 1
but what I want is
1 2 NaN 1 3 2 1 2
i.e. I just want to remove the spike (10) replacing it with a NaN.
Is this possible in some way?
Thank you

Answers (1)

Star Strider
Star Strider on 22 Mar 2021
Use the isoutlier function:
data = [1,2,10,1,3,2,1,2];
TF = isoutlier(data); % Function Introduced In R2017a
data(TF) = NaN
producing:
data =
1 2 NaN 1 3 2 1 2
To keep the original ‘data’ vector, first make a copy of it, then do the analyses.

Categories

Find more on Electrophysiology in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!