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.*

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

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.

Opportunities for recent engineering grads.

## 0 Comments