mesh and surf for surfaces in MATLAB - Time & Space Complexity
When we use mesh and surf in MATLAB, we create 3D surface plots from data grids.
We want to know how the time to draw these surfaces changes as the data size grows.
Analyze the time complexity of the following code snippet.
% Create grid points
[x, y] = meshgrid(linspace(-5,5,n), linspace(-5,5,n));
% Calculate surface values
z = sin(sqrt(x.^2 + y.^2));
% Plot surface
surf(x, y, z);
This code creates a grid of points, computes a surface height for each point, and then plots the surface.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Computing the surface values for each point in the grid.
- How many times: Once for each of the n x n points in the grid.
As the grid size n increases, the number of points grows by n squared, so the work grows quickly.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 100 (10x10) |
| 100 | 10,000 (100x100) |
| 1000 | 1,000,000 (1000x1000) |
Pattern observation: Doubling n roughly quadruples the work because the grid is two-dimensional.
Time Complexity: O(n^2)
This means the time to compute and plot the surface grows with the square of the grid size.
[X] Wrong: "Increasing n only makes the code run a little slower because it's just one loop."
[OK] Correct: The code uses a grid with two dimensions, so the number of points grows by n times n, not just n.
Understanding how plotting time grows with data size helps you write efficient visualizations and explain performance clearly.
"What if we used a 3D grid (x, y, z) instead of 2D? How would the time complexity change?"
Practice
mesh and surf functions in MATLAB when plotting 3D surfaces?Solution
Step 1: Understand the function outputs
meshdraws a grid-like wireframe of the surface without filling colors.Step 2: Compare with
surfsurfdraws a colored surface that fills the area between grid lines, showing height with color.Final Answer:
meshcreates a wireframe surface, whilesurfcreates a colored surface. -> Option AQuick Check:
Wireframe vs colored surface = A [OK]
- Thinking mesh colors the surface
- Confusing 2D and 3D plotting
- Assuming mesh only works with vectors
Solution
Step 1: Recall mesh function syntax
The correct syntax for mesh requires three inputs: X, Y, and Z matrices representing coordinates.Step 2: Check options
Only mesh(X, Y, Z); matches the correct order and function name. mesh(X, Y); misses Z, B uses invalid function meshplot, C swaps Y and Z incorrectly.Final Answer:
mesh(X, Y, Z); -> Option BQuick Check:
Correct function and argument order = D [OK]
- Using wrong function name like meshplot
- Swapping Y and Z arguments
- Omitting one of the required inputs
X = 1:3; Y = 1:3; [X, Y] = meshgrid(X, Y); Z = X.^2 + Y.^2; mesh(X, Y, Z);
Solution
Step 1: Understand meshgrid and Z calculation
meshgridcreates matrices X and Y for grid points. Z is calculated as sum of squares, forming a paraboloid shape.Step 2: Understand mesh plotting
meshplots a wireframe 3D surface of Z over X and Y, showing the paraboloid shape as a grid.Final Answer:
A 3D wireframe surface showing a paraboloid shape. -> Option DQuick Check:
meshgrid + paraboloid + mesh = wireframe paraboloid [OK]
- Thinking mesh creates colored surface
- Assuming meshgrid returns vectors, not matrices
- Expecting 2D plot instead of 3D
X = 0:0.5:2; Y = 0:0.5:2; Z = X.^2 + Y.^2; surf(X, Y, Z);
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
surfexpects X, Y, Z matrices of the same size, usually created bymeshgrid. 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 AQuick Check:
surf needs matching matrix sizes = C [OK]
- Passing vectors instead of matrices to surf
- Misunderstanding element-wise operations
- Thinking surf accepts vector inputs directly
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?Solution
Step 1: Create grid points for x and y
Uselinspaceto create vectors from -pi to pi with enough points, then usemeshgridto create matrices X and Y.Step 2: Calculate Z values element-wise
Calculate Z assin(X) .* cos(Y)using element-wise multiplication to get matrix Z matching X and Y.Step 3: Plot with surf
Usesurf(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 CQuick Check:
meshgrid + element-wise .* + surf = B [OK]
- Using * instead of .* for element-wise multiplication
- Not using meshgrid to create X and Y matrices
- Using vectors directly in surf without matching sizes
Ready to prove it?
Pass the test and this pattern moves unknown
