How to plot 3d from scattered dataset captured from xlsx file?
2 views (last 30 days)
I have xlsx file ... I'm able to plot it as 2d ... But I want to have the 3d version...
I have attached a sample of the dataset and how the figure looks in 2d and how it should look in 3d diemension
I copied the data to txt file and tried to plot it using the code below, but it didnt work with me
data = dlmread('sample.txt');
x = data(:,1);
y = data(:,2);
z = data(:,3);
jonas on 14 Jul 2020
Edited: jonas on 14 Jul 2020
You need gridded data to use surf. You have scattered data.
xyz = readmatrix('sample.xlsx');
[x,y,z] = deal(xyz(:,1),xyz(:,2),xyz(:,3));
[X,Y] = meshgrid(linspace(min(x),max(x),100),...
Z = griddata(x,y,z,X,Y,'linear');
%extrapolate using constant = 0
Z(isnan(Z)) = 0;
Alternatively you could fit a surface to your contours using this FEX function
Also, you probably want to interpolate your data to get more samples, as the resulting fit is very ugly. Could do something like:
t = 1:numel(x);
k = 2;
tv = linspace(min(t),max(t),numel(x)*k);
x = interp1(t,x,tv);
y = interp1(t,y,tv);
z = interp1(t,z,tv);