Create a surface from several 1D plots
18 views (last 30 days)
Show older comments
I have fitted several groups of scattered points (x,z) into 1D plots which vary on a third variable y. I now want to connect these discrete points in a 3D plot with the third axis being y. How would I go about doing this? I tried using the surf function but I need my y variable to be a matrix so I'm confused because for each entry in y (vector) a fitted (x,z) plot is created, so how could y be a matrix?
Apologies if I posed the question poorly and thank you.
0 Comments
Accepted Answer
DGM
on 8 Sep 2021
Edited: DGM
on 8 Sep 2021
Something like this:
% so you have a vector for x
x = linspace(0,1,10);
% and a bunch of vectors for z
z1 = x.^1;
z2 = x.^2;
z3 = x.^3;
z4 = x.^4;
z5 = x.^5;
% concatenate them into a matrix
z = [z1; z2; z3; z4; z5];
% define an appropriately-sized vector representing y
y = linspace(0,1,5);
% plot things
surf(x,y,z)
If you want more points along y than you have z-vectors, you'll need to interpolate
EDIT:
If there are different x-vectors, I don't really see why this won't work:
% so you have a bunch of vectors for x
nx = 10;
v = 0.05;
x0 = linspace(0,1,nx);
x1 = x0 + v*rand(1,nx);
x2 = x0 + v*rand(1,nx);
x3 = x0 + v*rand(1,nx);
x4 = x0 + v*rand(1,nx);
x5 = x0 + v*rand(1,nx);
% and a bunch of vectors for z
z1 = x1.^1;
z2 = x2.^2;
z3 = x3.^3;
z4 = x4.^4;
z5 = x5.^5;
% concatenate them into a matrix
x = [x1; x2; x3; x4; x5];
z = [z1; z2; z3; z4; z5];
% define an appropriately-sized matrix representing y
y = repmat(linspace(0,1,5).',[1 nx]);
% plot things
surf(x,y,z)
0 Comments
More Answers (1)
KSSV
on 8 Sep 2021
- See to it that all the curves have same dimensions. If not use interp1 and get them into same size.
- Initliaze matrices X, Y, Z with rows as number of curves and columns as number of points in each curve.
- Use surf on X, Y, Z.
0 Comments
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!