Why I can not do this surf?

16 次查看(过去 30 天)
Ayob
Ayob 2014-1-19
I have made three matrices X,Y and Z. All of them are 144*1 matrices. I use surf(X,Y,Z), but it doesn't work!
[EDIT] Ayob "Answered" his own question with this, but I moved it up here since it's not an answer:
I have X, Y and Z matrices. How can I change X, Y and Z to the forms that enable me use surf? I have all nodes but in (x,y,z) shape.
  1 个评论
Paul
Paul 2014-1-19
need more info on how those vectors look like. is it like
x= [1 2 3 4 1 2 3 4 1 2 3 4]'
If the nodes are not equally distributed you'll still need to interpolate like in my other comment.

请先登录,再进行评论。

回答(2 个)

Paul
Paul 2014-1-19
Because Z should be a 144*144 matrix. 1 value for each pair of x and y values.
  2 个评论
Ayob
Ayob 2014-1-19
编辑:Ayob 2014-1-19
This is not exactly what I want. What other function should I use?(I have my vales in x,y,z which are in (X,Y,Z).
Paul
Paul 2014-1-19
Sounds like you have scattered data, need more info on that. You can probably interpolate the data using griddata to a desired grid like this:
[xq,yq] = meshgrid(-2:.2:2, -2:.2:2);
zq = griddata(x,y,z,xq,yq);
surf(xq,yq,zq)
Where xq and yq are the desired interpolation points.

请先登录,再进行评论。


Image Analyst
Image Analyst 2014-1-19
If you have only a few scattered points here and there, and these are listed in your x,y,z array, then you need to use the griddedInterpolant class. It will estimate z values for the missing coordinate locations and build a complete surface.
  1 个评论
Image Analyst
Image Analyst 2014-1-19
编辑:Image Analyst 2014-1-19
If you have older versions of MATLAB, use griddata() or TriScatteredInterp(). These are deprecated (not recommended, and scheduled to be eliminated) and the new recommendation is to use griddedInterpolant.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by