Plot a curve as a vertical 3D surface in MATLAB?
25 views (last 30 days)
Show older comments
I have two vectors of data, say x and y, corresponding to the discrete x and y coordinates of a curve in 2D space. I want to plot this curve with a fixed height, say z = 1, in 3D to form a surface. (The goal is to visualize the intersection of this surface with another surface plot). Below is an image that depicts what I want to do. Any ideas on how this could be accomplished?
0 Comments
Accepted Answer
Star Strider
on 22 Nov 2017
Edited: Star Strider
on 22 Nov 2017
Try this:
x = linspace(0, 2*pi, 50); % Independent Variable
y = sin(x); % Dependent Variable
z = [ones(size(x)); zeros(size(x))]; % ‘Z’ Matrix
figure(1)
surf([x; x], [y; y], z)
grid on
axis equal
Also, if you want more ‘levels’ in the z-direction:
x = linspace(0, 2*pi, 50); % Independent Variable
y = sin(x); % Dependent Variable
z = [(1:-0.2:0)'*ones(size(x))]; % ‘Z’ Matrix
figure(1)
surf(repmat(x,size(z,1),1), repmat(y,size(z,1),1), z)
grid on
axis equal
The ‘(1:-0.2:0)’ in the z calculation sets the number of ‘levels’ and values of the ‘levels’. Experiment with it to get the result you want.
NOTE — This requires x and y to be row vectors.
EDIT — Added plot image.
0 Comments
More Answers (0)
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!