Effacer les filtres
Effacer les filtres

How to obtain a section from a surf plot

28 vues (au cours des 30 derniers jours)
Ricardo Duarte
Ricardo Duarte le 30 Juin 2021
Commenté : Ricardo Duarte le 1 Juil 2021
Dear all,
I have a surface plot that represents the bathymetry of a given surface:
x=longitute;
y=latitude;
z=depth;
Now, I want to obtain a section that cuts this surface at the latitude (37.9º) in order to obtain something like the following figure:
How can I do this?
Thanks in advance.
  2 commentaires
DGM
DGM le 30 Juin 2021
Modifié(e) : DGM le 30 Juin 2021
The example image isn't a section. It simply appears to be the same surface from a 2D view, like
shading flat % get rid of edges
view([0 -1 0]) % set 2D view looking toward +y
Either that, or it represents some sort of difference information.
If you actually want a section, it will just be a line. If the query point where you want to make the section belongs to the x,y points you're using, then all you have to do is extract the corresponding vector from the Z data. If it lies between the plotted points, then you'll have to interpolate.
Ricardo Duarte
Ricardo Duarte le 1 Juil 2021
Yes you are rigth, the second image is not a section.
I really want a section that will be represented by a single line. The problem is that i don't know how to extract that data.
Thanks

Connectez-vous pour commenter.

Réponse acceptée

KSSV
KSSV le 1 Juil 2021
Check this demo example, may be useful.
[X,Y,Z] = peaks(100) ;
surf(X,Y,Z)
xi = unique(X(:)) ;
val = 0; dx = 10^-3 ; w = 10 ;
yi = linspace(val-dx,val+dx,w) ;
[Xi,Yi] = meshgrid(xi,yi) ;
Zi = interp2(X,Y,Z,Xi,Yi) ;
surf(Xi,Yi,Zi)
  4 commentaires
DGM
DGM le 1 Juil 2021
Modifié(e) : DGM le 1 Juil 2021
Or instead of scatter3(), just
plot(xi,zi)
if you don't need the color mapping and want a plain 2D solid line.
or
h = surf([xi(:) xi(:)],[yi(:) yi(:)],[zi(:) zi(:)]);
set(h,'facecolor','none','edgecolor','interp');
set(h,'linewidth',3); % make it fat so it's easier to demonstrate
view([0 -1 0]); % only show 2-D view
colormap(parula);
If you want the solid line with colormapping.
The 2D view enforcement works with scatter3() too.
Ricardo Duarte
Ricardo Duarte le 1 Juil 2021
Thank you! It works perfectly

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by