Effacer les filtres
Effacer les filtres

Quick question about "surf" or "surfc"

4 vues (au cours des 30 derniers jours)
seyedashraf
seyedashraf le 5 Déc 2011
Modifié(e) : seyedashraf le 6 Déc 2021
Hi
The problem is, I need to plot a 3D surface in each loop of my computations, lets say water depth. the computational domain is rectangular but it is not square, so the number of elements in X direction is not the same as the number of elements in Y direction.
for square domains I used to use the command :
xx1=linspace(0,Xlength,NX);
yy1=linspace(0,Ylength,NY);
[x1,y1]=meshgrid(xx1,yy1);
surf(x1,y1,z);
view(125,20);
but when managing to use a non-square domain it gives the error:
??? Error using
==> surf at 78
Data dimensions
must agree.
Error in ==>
test at 53
surf(x1,y1,z);
removing the x1,y1 from the surf(x1,y1,z) command gives a 3D with the wrong scale and it is not useful at all
, so please advice

Réponse acceptée

Sean de Wolski
Sean de Wolski le 5 Déc 2011
size(x1)
size(y1)
size(z)
Will show that not all three matrix sizes are the same. Remember meshgrid swaps the inputs unlike ndgrid
  3 commentaires
Walter Roberson
Walter Roberson le 5 Déc 2011
Yup, but that 2D domain was not produced by meshgrid.
Use ndgrid() instead of meshgrid() to do what you want.
seyedashraf
seyedashraf le 5 Déc 2011
Thanks Sean de Wolski. Thanks Walter Roberson, that replacement made it work.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by