Smoothing plots in MATLAB
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
bio lim
el 26 de Mayo de 2015
Comentada: Thorsten
el 26 de Mayo de 2015
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 comentarios
Respuesta aceptada
Thorsten
el 26 de Mayo de 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 comentarios
Thorsten
el 26 de Mayo de 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');
Más respuestas (0)
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!