Smoothing plots in MATLAB
1 view (last 30 days)
Show older comments
Hello. I am trying to smooth my graph by applying the moving average filter. I have searched and discovered that there exists a function smooth(), which can easily make your curve smoother. Since I don't have this function, I have been trying to either code my own smoothing function, or download already written functions. However, none of them worked so far. Could anyone give me some advice on this? Thanks. My graph is the one given in the figure. (46 indexes, each index plotted with different colour.)
My code is as follows.
maxind = 46;
colortab = jet(maxind); %distinct colors
figure
hold on
for ind=1 : maxind,
plot(plane_des2(ind).Altitude, plane_des2(ind).IAS,'-', 'Color', colortab(ind,:));
if ind == 1 %save time on the rest
xlabel('Horizontal Displacement');
ylabel('Unfiltered Airpseed');
title('Airpseed vs Displacement');
end
end
hold off
Thanks.
0 Comments
Accepted Answer
Thorsten
on 26 May 2015
To generate a smoothed version xs of x, you can average over n elements, i.e., n = 3, with the following one-liner:
n = 3; xs = conv(x, 1/n*ones(1,n), 'same')
2 Comments
Thorsten
on 26 May 2015
n = 3; % or a 5 or 7 etc if you want higher smoothing
for ind =1:maxind
y = plane_des2(ind).IAS;
ys = conv(ys, 1/n*ones(1,n), 'same');
plot(plane_des2(ind).Altitude, ys, '-', 'Color', colortab(ind,:));
end
% outside the for loop
hold off
xlabel('Horizontal Displacement');
ylabel('Unfiltered Airpseed');
title('Airpseed vs Displacement');
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!