How do i smooth a plot?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/155610/image.jpeg)
I tried the matlab help but i cant seem to get it right :( attached is the plot i obtained
1 commentaire
Image Analyst
le 26 Jan 2014
Upload your delta and D coordinates if you want us to help with your actual data.
Réponses (4)
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
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)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/177532/image.png)
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
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);
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.
0 commentaires
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!