Plot xyz point data to 3D contour

How to plot the xyz point data (attached) into 3D contour? Thank you

 Accepted Answer

Try this:
D = readmatrix('data.txt');
x = D(~(any(isnan(D),2)),1);
y = D(~(any(isnan(D),2)),2);
z = D(~(any(isnan(D),2)),3);
N = 50;
xv = linspace(min(x), max(x), N);
yv = linspace(min(y), max(y), N);
[X,Y] = ndgrid(xv, yv);
Z = griddata(x, y, z, X, Y);
figure
surf(X, Y, Z)
.

4 Comments

thank you very much for your help.. I am so sorry for being late in responsing your answer..
As always, my pleasure!
No worries! I very much appreciate that you returned to check on it and Accept my Answer!
what if the input is shape file. your code would be:
D = shaperead('Cross_9_Agustus_2020_A1.shp')
x = D.X(~(any(isnan(D),2)),4);!starting error
y = D.Y(~(any(isnan(D),2)),5);
z = D.Z(~(any(isnan(D),2)),6);
N = 100;
xv = linspace(min(x), max(x), N);
yv = linspace(min(y), max(y), N);
[X,Y] = ndgrid(xv, yv);
Z = griddata(x, y, z, X, Y);
figure
contour(X, Y, Z,10);
however, it was written in error part that:
Undefined function 'isnan' for input arguments of type 'struct'.
do you familiar with that problem? Thank you in advance
The shaperead function requires the Mapping Toolbox, that I do not have.
I cannot run your code.
However, removing the NaN values from the structure would likely be straightforward:
Dnonan = structfun(@(x)x(~(any(isnan(x),2))),D, 'Unif',0);
x = Dnonan.X;
y = Dnonan.Y;
z = Dnonan.Z;
See if that does what you want. (It worked with a random structure I created to test this, with the fields of ‘D’ being column vectors.)
Make appropriate changes to get thee result you want.

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!