MATLAB Plotting 3D Graph with MATLAB Function

AI Thread Summary
To create a 3D graph in MATLAB using a function that accepts an equation as a parameter, the function needs to be defined to evaluate the equation over a meshgrid. The initial attempt resulted in an error because the variable 'z' was not set correctly. The solution involves modifying the function to compute 'z' by calling the passed function with the meshgrid variables, specifically using 'z = f(x,y)'. Additionally, when invoking the graph function, it is essential to use an anonymous function syntax, such as 'graph(@(x,y) sin(x) - cos(y))', to ensure that the equation is evaluated properly over the grid. This approach resolves the error and allows for successful 3D graph generation.
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))
 

Similar threads

Replies
4
Views
2K
Replies
5
Views
2K
Replies
4
Views
1K
Replies
1
Views
2K
Replies
1
Views
4K
Replies
2
Views
3K
Replies
1
Views
4K
Back
Top