## how to plot a symbolic equation with 4 variables?

on 1 Apr 2013

### Walter Roberson (view profile)

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!

## Products

No products are associated with this question.

### Walter Roberson (view profile)

on 1 Apr 2013

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

### Alex (view profile)

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

### Walter Roberson (view profile)

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.

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