Detect and remove outliers in signals
13 views (last 30 days)
I have a signal, which is attached, and I want to remove outliers, which are shown in the figure, in datasets, or just replaced them with 0.
I try to use the rmoutliers function but it reduces the length of datasets while I want to get the same length of original datasets as a result.
Any suggestion would be appreciated.
Bjorn Gustavsson on 5 Aug 2022
Be very cautious when changing bad-data-values to some default-value - that will eventually lead to (since we all know that the exact procedure one takes to do this will be forgotten far too soon) bad errors in some statistical measures of that data-set. If you really want the same-side of the out-lier-removed data I suggest you plug in nan instead of zeros. If you use rmoutliers you could do this:
[~,idx_outliers] = rmoutliers(Data);
Data(idx_outliers) = nan;
Then you can still do the statistics on the signal - this way you will have to correctly handle the nan-s in the data, which isn't too tricky.