How to plot 3d from scattered dataset captured from xlsx file?
3 visualizzazioni (ultimi 30 giorni)
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 il 14 Lug 2020
Modificato: jonas il 14 Lug 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);