How do i smooth a plot?

figure
plot(delta(90:840,485),'XData',[0:(D*1000)/750:(D*1000)]); %plot line y 485
smooth(delta(90:840,485),'XData',[0:(D*1000)/750:(D*1000)],loess);
xlabel('Distance(mm)');
ylabel('Delta');
figure_FontSize=13;
set(get(gca,'XLabel'),'FontSize',figure_FontSize,'Vertical','top');
set(get(gca,'YLabel'),'FontSize',figure_FontSize,'Vertical','middle');
set(findobj('FontSize',10),'FontSize',figure_FontSize);
set(gca,'tickdir','in')
set(gca,'ticklength',[0.01 0.01]);
axis on
I tried the matlab help but i cant seem to get it right :( attached is the plot i obtained

1 comentario

Image Analyst
Image Analyst el 26 de En. de 2014
Upload your delta and D coordinates if you want us to help with your actual data.

Iniciar sesión para comentar.

Respuestas (4)

vijay sai
vijay sai el 26 de En. de 2014

0 votos

try varying the range of the axes ...i.e. suppose if distance axes is given the range 0:1:10.. try doing this way 0:0.1:10..may be it could solve the issue...

2 comentarios

Slarn
Slarn el 26 de En. de 2014
May i know how to write it in code form?
vijay sai
vijay sai el 26 de En. de 2014
Editada: Walter Roberson el 27 de En. de 2014
am trying to show u a simple example..my answer just based upon the assuming that no of samples u take to plot the figure effect the results..so i am showing you the simple code of plotting a sine wave..so if my view of the problem is relevant to yours...alter the no of samples..
clc
close all
clear all
t=0:0.4:10;
f=1;
x=sin(2*pi*f*t);
figure
plot(t,x)
t1=0:0.1:10;
f=1;
y=sin(2*pi*f*t1);
figure
plot(t1,y)
t2=0:0.001:10;
f=1;
y=sin(2*pi*f*t2);
figure
plot(t2,y)

Iniciar sesión para comentar.

Walter Roberson
Walter Roberson el 26 de En. de 2014

0 votos

You could pass the Y values through a moving average filter or other low-pass filter before plotting.
You could take the existing Y values and use a spline fit between them and then interpolate at a higher resolution time scale and plot that -- but you would probably not see much of a difference unless you zoomed in.

1 comentario

Walter Roberson
Walter Roberson el 27 de En. de 2014
Change your line
plot(delta(90:840,485),'XData',[0:(D*1000)/750:(D*1000)]);
to
XData = [0:(D*1000)/750:(D*1000)];
rawYData = delta(90:840,485);
YData = conv(rawYData, ones(1,25)); %sliding mean
plot(XData, YData);

Iniciar sesión para comentar.

Image Analyst
Image Analyst el 26 de En. de 2014
Editada: Image Analyst el 28 de Feb. de 2014

0 votos

Lots of ways. Various filters.
smoothY = conv(y, ones(1,25)); % Sliding mean
smoothY = medfilt1(y, 11); % 1D median filter
% Savitzky-Golay sliding polynomial filter
smoothY = sgolayfilt(y, polynomialOrder, windowWidth);
and others like wiener, etc.
Slarn
Slarn el 27 de En. de 2014

0 votos

i cant seem to smooth my 2 figures with the moving average. not sure what went wrong. attached is the files

1 comentario

Image Analyst
Image Analyst el 27 de En. de 2014
Looks like Walter's code should work. Did you try it?

Iniciar sesión para comentar.

Preguntada:

el 26 de En. de 2014

Editada:

el 28 de Feb. de 2014

Community Treasure Hunt

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

Start Hunting!

Translated by