Draw 3D plot from 2D plot with discrete data points

11 次查看(过去 30 天)
Hi All,
I am trying to draw 3D plot from a 2D line graph (in x/z-axis).
I have discrete data points in x and z-axis like below graph. I want to roate it around z-axis. Therefore, I used 'surf'
Here is what I obtained so far.
filename = 'filename.xlsx';
x(:,:)= xlsread(filename);
r = (x(4:49,12))'; z = (x(4:49,13))'; %% data from excel
for i = 1:46;
theta = linspace(0,2*pi,200); %% to rotate around z-axis
X = r(i)*cos(theta);
Y = r(i)*sin(theta);
Z = z(i)*ones(length(Y), length(X));
plot(X,Y); %% just for checking X and Y are on circles
surf(X,Y,Z); %% wanted to obtain a smooth mountain with an empty center.
if i < 46;
hold on;
i = i+1;
end;
end
xlabel('x'); ylabel('y');zlabel('z');
hold off
shading interp
colorbar
and this is the result..
The profile has to be very smooth, no sharp edges on the boundary. However, it has four edges. Also, when x<450, there is be no data points in z-axis.. but it shows very flat top surface (yellow). I think I need to assign z-values at the correct x and y coordinates. However, I am not sure how to fix this.
Please help me to resolve this issue.
Thanks a lot for your comments and time in advance!

采纳的回答

Star Strider
Star Strider 2021-7-20
Without the Excel file, I experimented to create an approsimately equal curve. I then used it as the radiuc argument to the cylinder fucntion to create the surf plot.
x = linspace(460, 700, 50);
z = 1E-194*exp(-0.025*x+460) + 1.5;
figure
plot(x, z)
title('Radius Curve')
[X,Y,Z] = cylinder(z,50);
X = X .* x(:)/2;
Y = Y .* x(:)/2;
Z = Z*max(z) + min(z);
figure
surfc(X, Y, Z, 'EdgeColor','none')
colorbar
zlim([0 max(z)])
That likely approximates what appears to have been requested. Make appropriate changes so it works correctly with the actual data.
.
  8 个评论
autumn
autumn 2021-7-23
Thanks for the reply. It helped me a lot to understand it. :)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by