MATLAB Answers

How to transfer surf(x,y,z) to a data contains height value?

1 view (last 30 days)
Yu Zou
Yu Zou on 18 Jan 2018
Answered: Walter Roberson on 19 Jan 2018
Greeting everyone!
What i have now is 3 Matrix x,y,z, which can be presented by surf(x,y,z).
But i want to transfer these data to one matrix containing height value, which can be presented by surf(f).
Thanks!
Here is my data:
[x,y,z] = sphere; % Makes a 21-by-21 point sphere
x = x(11:end,:); % Keep top 11 x points
y = y(11:end,:); % Keep top 11 y points
z = z(11:end,:); % Keep top 11 z points
r = 3; % r radius value
x=r*x+r;
y=r*y+r; % Move x, y starting from 0
z=r*z; % Change the radius of the dom to r
% so i generate a dom(half ball) with radius 3
  2 Comments
Yu Zou
Yu Zou on 19 Jan 2018
thanks for advice. I want to extract the height from a dom so that i can execute something else, so it's pretty useful for me.

Sign in to comment.

Answers (2)

Image Analyst
Image Analyst on 18 Jan 2018
Try interp2() to take your coordinates and make a 2-D matrix where the values are the z values.
  3 Comments

Sign in to comment.


Walter Roberson
Walter Roberson on 19 Jan 2018
F = scatteredInterpolant(x(:),y(:),z(:));
[X,Y] = ndgrid(1:floor(max(x(:))));
Z = F(X,Y);
surf(Z)
You will find this rather unsatisfactory, but it is the best that can be done while maintaining the axes labels with a simple surf(Z)

Community Treasure Hunt

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

Start Hunting!

Translated by