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 Comment

Upload your delta and D coordinates if you want us to help with your actual data.

Sign in to comment.

Answers (4)

vijay sai
vijay sai on 26 Jan 2014

0 votes

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 Comments

Slarn
Slarn on 26 Jan 2014
May i know how to write it in code form?
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)

Sign in to comment.

Walter Roberson
Walter Roberson on 26 Jan 2014

0 votes

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 Comment

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);

Sign in to comment.

Image Analyst
Image Analyst on 26 Jan 2014
Edited: Image Analyst on 28 Feb 2014
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 on 27 Jan 2014

0 votes

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

1 Comment

Looks like Walter's code should work. Did you try it?

Sign in to comment.

Categories

Asked:

on 26 Jan 2014

Edited:

on 28 Feb 2014

Community Treasure Hunt

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

Start Hunting!