We use mesh and surf to draw 3D surfaces. They help us see how values change over two directions, like hills or waves.
To visualize the shape of a mountain or terrain in 3D.
To show how temperature changes over an area and height.
To display the surface of a mathematical function with two inputs.
To compare different 3D surfaces side by side.
To explore patterns in data that depend on two variables.
Syntax
MATLAB
mesh(X, Y, Z)
surf(X, Y, Z)
X and Y are grids of coordinates, usually made by meshgrid.
Z is the height or value at each (X, Y) point.
Examples
This draws a wireframe bowl shape using mesh.
MATLAB
x = -2:0.5:2;
y = -2:0.5:2;
[X, Y] = meshgrid(x, y);
Z = X.^2 + Y.^2;
mesh(X, Y, Z);
This shows a smooth wave surface using surf.
MATLAB
x = -3:0.1:3;
y = -3:0.1:3;
[X, Y] = meshgrid(x, y);
Z = sin(sqrt(X.^2 + Y.^2));
surf(X, Y, Z);
Sample Program
This program creates two plots for the surface defined by Z = X^2 - Y^2. The first is a wireframe mesh, and the second is a colored surface.
MATLAB
x = -2:0.2:2;
y = -2:0.2:2;
[X, Y] = meshgrid(x, y);
Z = X.^2 - Y.^2;
figure;
mesh(X, Y, Z);
title('Mesh plot of Z = X^2 - Y^2');
figure;
surf(X, Y, Z);
title('Surf plot of Z = X^2 - Y^2');
OutputSuccess
Important Notes
mesh shows a grid wireframe without colors.
surf shows a colored surface that helps see height differences better.
You can rotate the 3D plot with the mouse to see it from different angles.
Summary
mesh draws a wireframe 3D surface.
surf draws a colored 3D surface.
Both need X, Y, and Z grids to show height values.
Practice
(1/5)
1. What is the main difference between mesh and surf functions in MATLAB when plotting 3D surfaces?
easy
A. mesh creates a wireframe surface, while surf creates a colored surface.
B. mesh plots 2D graphs, while surf plots 3D graphs.
C. mesh only works with matrices, surf only works with vectors.
D. mesh colors the surface, surf shows only edges.
Solution
Step 1: Understand the function outputs
mesh draws a grid-like wireframe of the surface without filling colors.
Step 2: Compare with surf
surf draws a colored surface that fills the area between grid lines, showing height with color.
Final Answer:
mesh creates a wireframe surface, while surf creates a colored surface. -> Option A
4. Identify the error in this MATLAB code snippet:
X = 0:0.5:2; Y = 0:0.5:2; Z = X.^2 + Y.^2; surf(X, Y, Z);
medium
A. Z must be a matrix matching sizes of X and Y, not vectors.
B. surf requires only two inputs, not three.
C. X and Y must be row vectors, not column vectors.
D. The operator .^ is invalid for vectors.
Solution
Step 1: Check dimensions of X, Y, and Z
X and Y are vectors, but Z is calculated element-wise and is also a vector, not a matrix matching grid points.
Step 2: Understand surf input requirements
surf expects X, Y, Z matrices of the same size, usually created by meshgrid. Here, Z is not a matrix matching X and Y.
Final Answer:
Z must be a matrix matching sizes of X and Y, not vectors. -> Option A
Quick Check:
surf needs matching matrix sizes = C [OK]
Hint: Use meshgrid to create X, Y matrices before surf [OK]
Common Mistakes:
Passing vectors instead of matrices to surf
Misunderstanding element-wise operations
Thinking surf accepts vector inputs directly
5. You want to plot the surface of the function z = sin(x) * cos(y) over the range x = -pi to pi and y = -pi to pi. Which MATLAB code correctly creates a colored surface plot using surf?
hard
A. x = -pi:pi; y = -pi:pi; Z = sin(x) * cos(y); surf(x, y, Z);
B. x = linspace(-pi, pi, 50); y = linspace(-pi, pi, 50); Z = sin(x) .* cos(y); surf(x, y, Z);
C. x = linspace(-pi, pi, 50); y = linspace(-pi, pi, 50); [X, Y] = meshgrid(x, y); Z = sin(X) .* cos(Y); surf(X, Y, Z);
D. X = -pi:pi; Y = -pi:pi; Z = sin(X) + cos(Y); mesh(X, Y, Z);
Solution
Step 1: Create grid points for x and y
Use linspace to create vectors from -pi to pi with enough points, then use meshgrid to create matrices X and Y.
Step 2: Calculate Z values element-wise
Calculate Z as sin(X) .* cos(Y) using element-wise multiplication to get matrix Z matching X and Y.
Step 3: Plot with surf
Use surf(X, Y, Z) to plot the colored surface correctly.
Final Answer:
x = linspace(-pi, pi, 50); y = linspace(-pi, pi, 50); [X, Y] = meshgrid(x, y); Z = sin(X) .* cos(Y); surf(X, Y, Z); -> Option C
Quick Check:
meshgrid + element-wise .* + surf = B [OK]
Hint: Use meshgrid and element-wise .* for surface plots [OK]
Common Mistakes:
Using * instead of .* for element-wise multiplication
Not using meshgrid to create X and Y matrices
Using vectors directly in surf without matching sizes
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.