MATLAB Answers


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!



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


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)


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?

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.

Join the 15-year community celebration.

Play games and win prizes!

Learn more
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

MATLAB Academy

New to MATLAB?

Learn MATLAB today!