smooth a surface plot

111 views (last 30 days)
Lauren E
Lauren E on 2 Apr 2015
Commented: imran saeed on 15 Feb 2021
I have an array of data which I'm plotting using the surface function. I'd like to smooth the data but interp2 doesn't work since I don't have a mesh (I'm plotting data, not a function). Is there a way I can smooth this?
My code isn't much to look at:
surface = surf(P1,P2,L);
where P1, P2 and L are imported from a data file.

Answers (1)

Andrew Newell
Andrew Newell on 2 Apr 2015
Edited: Andrew Newell on 2 Apr 2015
You can make a mesh:
[P1,P2] = meshgrid(P1,P2);
Then use interp2.
EDIT: Corrected typo.
  5 Comments
imran saeed
imran saeed on 15 Feb 2021
Based on above discussion I made this funciton, it will make coding easier, you can call this function many times to make your function smoother and smoother,
function [X,Y,Z]=smooth_spline(x,y,z)
n=length(x); sp=min(x); ep=max(x);
X=linspace(sp,ep,2*n);
sp=min(y); ep=max(y);
Y=linspace(sp,ep,2*n);
[Kxx,Kyy]=meshgrid(X,Y);
Z = interp2(x,y,z,Kxx,Kyy,'spline');
end

Sign in to comment.

Categories

Find more on Interpolation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!