MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by Dirk
on 30 Nov 2012

Hello

I plotted an hyperbolic parabolid surface in Matlab. The colour of the plot is based on the z-coordinate of the surface. But, now I want to visualise the result of an other function (like: f= x+y+2) on the the surface. So the colour of the surface should be based on the result of function f and not on the z-coordinate. Can somebody explain clearly how to do this? Is it a 4dplot?...and/or how this exactly works?

Thanks in advance!

k = 1

x = linspace(-3,3);

y = linspace(-3,3);

[x,y] = meshgrid(x,y);

z = k*x.*y;

mesh(x,y,z)

*No products are associated with this question.*

Answer by Jonathan Epperl
on 30 Nov 2012

`'CDataSource'` is the property you need. In your case:

f = x.^2+y.^2; % The "other" function m = mesh(x,y,z) % m now contains a handle to the mesh set(m,'CDataSource','f') % 'CDataSource' is a variable name as a string refreshdata % That's necessary so Matlab reevaluates the CDataSource

Answer by Dirk
on 30 Nov 2012

hmm..I dont get it.

When i add your code, nothing in the plot changes:

i.e. when f = x, the points with te same x coordinate should be plotted in the same color.

When f = cte, the whole surface should be plotted in the same color.

Jonathan Epperl
on 1 Dec 2012

Did you copy&paste my code? It works fine for me. Run your code that you posted in the original post, then run my code, the color should change. Did you mess with the colormap already?
Try `colormap cool` or something like that, that should change the colors.

Every time you change the value of 'CDataSource' (whether you assign a different variable or change the value of the variable you designated CDataSource) you will have to call `refreshdata`.

## 0 Comments