How to plot 3D surface with vector-input function?

7 visualizaciones (últimos 30 días)
ejk
ejk el 6 de Ag. de 2020
Comentada: Star Strider el 7 de Ag. de 2020
I have a function that takes array inputs as arguments.
FUN = @(x) = x(1).^2+x(2).^2
When I try to use fsurf (ie. fsurf(FUN) or fsurf(FUN,[0 100 0 100])), the surface will not plot, and an error will appear (Error updating FunctionSurface).
surf or meshgrid don't work either.
What can I do to have this function plot, instead of un-vectorizing the handle (ie. FUN = @(x1,x2) x1.^2+x2.^2)?

Respuesta aceptada

Star Strider
Star Strider el 6 de Ag. de 2020
The function you coded:
FUN = @(x) = x(1).^2+x(2).^2;
will only take the first 2 elements of ‘x’ (whatever it is), and will return a scalar.
You need to restate it as:
FUN = @(x1,x2) x1.^2+x2.^2;
for example, to produce a surface:
[X1,X2] = meshgrid(-1:0.5:1);
figure
surf(X1, X2, FUN(X1,X2))
grid on
.
  2 comentarios
ejk
ejk el 7 de Ag. de 2020
I take it that there's no way to do this without restating the function with two separate variables?
Star Strider
Star Strider el 7 de Ag. de 2020
That is correct.
I could not devise a way to do it otherwise, and I doubt that one exists.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Surface and Mesh Plots en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by