I need to create a 3D contour/surface plot with given points.

9 views (last 30 days)
I have several points with x,y,z coordinates with varying z values that I need to show the contour of. I have plotted using the contour and surf function however I am getting a really block like image and need it refined to look similar to the image attached. It is almost impossible to see the difference in z values.
What would be the best way to approach this in order to be able to visually see the difference in z values?
  1 Comment
Walter Roberson
Walter Roberson on 7 Jul 2022
griddata() or scatteredInterpolant() and query at a more refined x and y grid; this will interpolate the data according to the interpolation method you specify (default would be bilinear interpolation.)

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 25 Jul 2022
N = 200;
P = 20;
x = rand(1, P);
y = randn(1, P);
z = sinpi(y*2) + exp(2*x);
figure()
scatter3(x, y, z)
xvec = linspace(min(x), max(x), N);
yvec = linspace(min(y), max(y), N);
[Xq, Yq] = meshgrid(xvec, yvec);
F = scatteredInterpolant(x(:), y(:), z(:));
Zq = F(Xq, Yq);
figure()
surf(Xq, Yq, Zq);

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!