Remove outliers but be careful with end points
Show older comments
Hi, I have some typcial data like this that I want to remove the outliers (red arrows)

I use the rmoutliers function and then fillmissing to handle these.
%For last plotted Data
ax=app.UIAxes3;
[datax,datay] = getDataFromGraph(app,ax,1); % my fucntion that gets the last plot x and y values.
A=[datax datay];
[B,TFrm,TFoutlier] = rmoutliers(A,"movmedian",10);
x=B(:,1); y=B(:,2); hold(ax,"on");
The contraint I have is if I remove an outlier from the 1st or last data point (i.e. green arrow above), then it MUST be replaced with e.g the nearest non outlier.
So I thought this would do it:
F = fillmissing(y,'linear','EndValues','nearest'); %F = fillmissing(y,'movmedian',10);
plot(ax,x,F,'.-');
However, its ignoring the last point (I dont mind other outliers being ignored, I just need the starting x and finishing x to be the same as the original data

Thanks
Accepted Answer
More Answers (1)
Steven Lord
on 2 May 2025
1 vote
Do you want to remove the outliers or do you want to fill them in? If the latter, see the filloutliers function.
3 Comments
Steven Lord
on 2 May 2025
If you want to smooth your data using Savitzky-Golay, you can use the smoothdata function and specify the "sgolay" smoothing method.
Jason
on 2 May 2025
Categories
Find more on Descriptive Statistics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


