MATLAB Answers

Having trouble making a surface plot using data from Excel

1 view (last 30 days)
Henrik Caroe
Henrik Caroe on 3 Apr 2021
Commented: Henrik Caroe on 4 Apr 2021
Im trying to construct a surface plot of a mountain using MATLAB. I've been trying to import data from Excel but when trying to use the script:
function plot3Ddata(x,y,z)
data = xlsread('TamElev2','A2:C261');
x=data(:,1);
y=abs(data(:,2));
z=data(:,3);
dt = delaunayTriangulation(x,y);
tri= dt.ConnectivityList;
xi= dt.Points(:,1);
yi= dt.Points(:,2);
F= scatteredInterpolant(x,y,z);
zi=F(xi,yi);
trisurf(tri,xi,yi,zi);
end
It keeps giving me a flat line going in both the x and y direction, I'm not sure if it is an issue with my code or how I have the data set up in excel but no matter what I do, it hasn't been plotting nicely.
  2 Comments
Henrik Caroe
Henrik Caroe on 4 Apr 2021
TamElev2 is a set of data I generated online, and the set I've been attempting to use with no luck. TamElev3 is a set of data I collected myself.

Sign in to comment.

Answers (1)

darova
darova on 4 Apr 2021
Either use triangulation
x = rand(20,1);
y = rand(20,1);
z = rand(20,1);
dt = delaunay(x,y);
trisurf(dt,x,y,z)
Either griddata
x = rand(20,1);
y = rand(20,1);
z = rand(20,1);
x1 = linspace(min(x),max(x),20);
y1 = linspace(min(y),max(y),20);
[X,Y] = meshgrid(x1,y1);
Z = griddata(x,y,z,X,Y);
surf(X,Y,Z)

Tags

Products

Community Treasure Hunt

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

Start Hunting!