Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

how to plot a symbolic equation with 4 variables?

Asked by Alex on 1 Apr 2013

Does anyone know how to plot a symbolic equation containing 4 variables? u=f(x,y,z) using colour as the fourth dimension for u?

Thanks a lot!

0 Comments

Alex

Products

No products are associated with this question.

1 Answer

Answer by Walter Roberson on 1 Apr 2013
Accepted answer

Assuming that f is a symbolic expression in x, y, z, then:

ufun = matlabFunction(f, 'vars', {'x', 'y', 'z'});
xrange = linspace(-10, 10, 50);       %for example
yrange = linspace(-pi, 3*pi/2, 50);   %for example
zrange = linspace(1, 2, 57);          %for example
[X, Y, Z] = ndgrid(xrange, yrange, zrange);
u = ufun(X, Y, Z);
pointsize = 10;               %adjust as needed
scatter3(X, Y, Z, pointsize, u);
colormap(copper(256));        %choose appropriate colormap

2 Comments

Alex on 1 Apr 2013

thanks for your helping hand, thanks to your reply I managed to figure out how to work with in N-D using ndgrid but I have one error puzzling me, can you help here?

[X, Y, Z] = ndgrid(1:200, 1:200, 1:200);

then I find U=...(omitted due to complexity)

scatter3(X,Y,Z,10,U)

and here the problem

Error using scatter3 (line 68)
X, Y and Z must be vectors of the same length.

it is strange because they were all created of equal length?

Walter Roberson on 1 Apr 2013
scatter3(X(:), Y(:), Z(:), 10, U(:))

Warning: this is pretty slow for 200 x 200 x 200! Expect slowdowns to start once you get bigger than about 21 x 21 x 21. On my system, 50 x 50 x 50 is still peppy "enough" to draw originally, but rotating it is becoming clumsy. 200 x 200 x 200 took on the order of a minute or more to draw -- even just closing the figure took a good 30 seconds.

Walter Roberson

Contact us