Plotting 3D Graph with MATLAB Function

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 5K views
stihl29
Messages
24
Reaction score
0
Hi, i need to pass a function in MATLAB a few parameters, one of the parameters is an equation such as :
sin(x)-cos(y)
and have it make the 3d graph, i have no problem setting up the meshgrid etc and getting it to work running strait from the m-file

function graph = graph(f)
n=20;
x = (-n:1:n);
y = (-n:1:n);
[x,y] = meshgrid(x,y);

z=f;

surf(x,y,z);

end

example of running the function

graph(sin(x)-cos(y))

right now when i run it i get.

? Error using ==> surf at 78
Z must be a matrix, not a scalar or vector.

Error in ==> graph at 7
surf(x,y,z);


Any advice would be great.
 
Physics news on Phys.org
Look up "help function pointer" and follow their examples.
 
Two things,

1) Change the line z = f to z = f(x,y)

2) When you call the function, use graph(@(x,y) cos(x) - sin(y))