Effacer les filtres
Effacer les filtres

How do i smooth a plot?

3 vues (au cours des 30 derniers jours)
Slarn
Slarn le 26 Jan 2014
Modifié(e) : Image Analyst le 28 Fév 2014
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 commentaire
Image Analyst
Image Analyst le 26 Jan 2014
Upload your delta and D coordinates if you want us to help with your actual data.

Connectez-vous pour commenter.

Réponses (4)

vijay sai
vijay sai le 26 Jan 2014
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 commentaires
Slarn
Slarn le 26 Jan 2014
May i know how to write it in code form?
vijay sai
vijay sai le 26 Jan 2014
Modifié(e) : Walter Roberson le 27 Jan 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)

Connectez-vous pour commenter.


Walter Roberson
Walter Roberson le 26 Jan 2014
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 commentaire
Walter Roberson
Walter Roberson le 27 Jan 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);

Connectez-vous pour commenter.


Image Analyst
Image Analyst le 26 Jan 2014
Modifié(e) : Image Analyst le 28 Fév 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 le 27 Jan 2014
i cant seem to smooth my 2 figures with the moving average. not sure what went wrong. attached is the files
  1 commentaire
Image Analyst
Image Analyst le 27 Jan 2014
Looks like Walter's code should work. Did you try it?

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by