Why I can not do this surf?
    2 views (last 30 days)
  
       Show older comments
    
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 Comment
  Paul
      
 on 19 Jan 2014
				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.
Answers (2)
  Paul
      
 on 19 Jan 2014
        Because Z should be a 144*144 matrix. 1 value for each pair of x and y values.
2 Comments
  Paul
      
 on 19 Jan 2014
				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
      
      
 on 19 Jan 2014
        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 Comment
  Image Analyst
      
      
 on 19 Jan 2014
				
      Edited: Image Analyst
      
      
 on 19 Jan 2014
  
			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.
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!

