Bird
Raised Fist0
MATLABdata~20 mins

Subplot for multiple panels in MATLAB - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Subplot Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this MATLAB subplot code?

Consider the following MATLAB code that creates subplots and plots simple lines. What will be the output displayed?

MATLAB
x = 1:5;
y = x.^2;
subplot(2,1,1);
plot(x,y);
title('Top plot');
subplot(2,1,2);
plot(y,x);
title('Bottom plot');
ATwo plots stacked vertically: top plot shows y = x^2, bottom plot shows x versus y
BTwo plots stacked vertically: top plot shows y = x^2, bottom plot shows x vs y (same as top plot)
COne plot only showing y = x^2, bottom plot is empty
DError: subplot indices exceed matrix dimensions
Attempts:
2 left
💡 Hint

Remember that subplot(m,n,p) divides the figure into an m-by-n grid and activates the p-th subplot.

❓ Predict Output
intermediate
2:00remaining
What happens if subplot indices overlap?

What will be the result of running this MATLAB code?

MATLAB
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
subplot(2,2,1);
plot(x,y1);
title('Sine');
subplot(2,2,1);
plot(x,y2);
title('Cosine');
ATwo separate subplots appear side by side
BBoth sine and cosine plots appear in the first subplot layered
CError: subplot index repeated
DOnly the cosine plot is visible in the first subplot; sine plot is overwritten
Attempts:
2 left
💡 Hint

Calling subplot with the same index activates the same panel, so new plots overwrite previous ones.

🔧 Debug
advanced
2:00remaining
Why does this subplot code produce an error?

Examine the MATLAB code below. It is intended to create a 3x1 subplot and plot data in each panel. Why does it produce an error?

MATLAB
x = 1:10;
for i = 1:4
  subplot(3,1,i);
  plot(x, x*i);
  title(['Plot ' num2str(i)]);
end
AError because subplot index 4 exceeds the 3x1 grid size
BError because loop variable i is not valid for subplot
CNo error; plots appear in first three subplots, fourth plot ignored
DError because plot command syntax is incorrect
Attempts:
2 left
💡 Hint

Check the maximum subplot index allowed for a 3x1 grid.

🚀 Application
advanced
2:30remaining
How to create a 2x2 grid with one large subplot?

You want to create a 2x2 subplot grid in MATLAB where the first subplot spans the entire top row, and the other two subplots are below it side by side. Which code achieves this layout?

Asubplot(2,2,1); plot(...); subplot(2,2,2); plot(...); subplot(2,2,3); plot(...);
Bsubplot(2,2,[1 2]); plot(...); subplot(2,2,3); plot(...); subplot(2,2,4); plot(...);
Csubplot(3,2,1); plot(...); subplot(3,2,3); plot(...); subplot(3,2,4); plot(...);
Dsubplot(1,3,1); plot(...); subplot(1,3,2); plot(...); subplot(1,3,3); plot(...);
Attempts:
2 left
💡 Hint

Use vector indexing in subplot to span multiple grid cells.

🧠 Conceptual
expert
3:00remaining
How does MATLAB handle subplot handles when reusing panels?

In MATLAB, when you create subplots and save their handles, what happens if you call subplot again with an existing panel index? How does this affect the handle and the plot?

AA new axes object is created and the handle changes; old plot remains unchanged
BMATLAB throws an error because subplot index is reused
CThe handle points to the existing axes; new plots overwrite the old content in that panel
DThe subplot command ignores the call and keeps the old plot unchanged
Attempts:
2 left
💡 Hint

Think about how MATLAB manages axes objects and figure panels.

Practice

(1/5)
1. What does the MATLAB function subplot(2, 3, 4) do?
easy
A. Plots data in the 2nd row and 3rd column of a figure.
B. Creates a 2x3 matrix and fills it with the number 4.
C. Clears the 4th subplot in a 2 by 3 grid.
D. Divides the figure into 2 rows and 3 columns, then selects the 4th panel for plotting.

Solution

  1. Step 1: Understand subplot grid parameters

    The first two numbers (2, 3) define the grid size: 2 rows and 3 columns.
  2. Step 2: Identify the panel number

    The third number (4) selects the 4th panel in row-wise order for plotting.
  3. Final Answer:

    Divides the figure into 2 rows and 3 columns, then selects the 4th panel for plotting. -> Option D
  4. Quick Check:

    subplot(m, n, p) = grid m x n, panel p [OK]
Hint: Remember subplot(m,n,p) means m rows, n columns, p panel [OK]
Common Mistakes:
  • Confusing the order of rows and columns
  • Thinking subplot creates a matrix of numbers
  • Assuming subplot clears panels automatically
2. Which of the following is the correct syntax to create a 3x1 subplot and plot in the second panel?
easy
A. subplot(3, 1, 2); plot(x, y);
B. subplot(1, 3, 2); plot(x, y);
C. subplot(3, 2, 1); plot(x, y);
D. subplot(2, 3, 2); plot(x, y);

Solution

  1. Step 1: Identify the grid layout

    A 3x1 subplot means 3 rows and 1 column, so subplot(3, 1, p) is correct.
  2. Step 2: Select the second panel

    The third argument '2' selects the second panel in the vertical stack.
  3. Final Answer:

    subplot(3, 1, 2); plot(x, y); -> Option A
  4. Quick Check:

    3 rows, 1 column, panel 2 = subplot(3,1,2) [OK]
Hint: Rows first, then columns, then panel number [OK]
Common Mistakes:
  • Swapping rows and columns in subplot arguments
  • Using wrong panel number for desired position
  • Confusing subplot grid with plot commands
3. What will be the output of the following MATLAB code?
subplot(1,2,1); plot(1:3, [2 4 6]);
subplot(1,2,2); plot(1:3, [1 3 5]);
medium
A. Two plots side by side: first with points (1,2),(2,4),(3,6), second with (1,1),(2,3),(3,5).
B. One plot with both data sets overlaid.
C. Error because subplot indices are incorrect.
D. Two plots stacked vertically.

Solution

  1. Step 1: Understand subplot grid

    subplot(1,2,1) creates a grid with 1 row and 2 columns, selecting the first panel.
  2. Step 2: Plot data in each panel

    The first plot shows points (1,2), (2,4), (3,6). The second subplot(1,2,2) plots points (1,1), (2,3), (3,5).
  3. Final Answer:

    Two plots side by side: first with points (1,2),(2,4),(3,6), second with (1,1),(2,3),(3,5). -> Option A
  4. Quick Check:

    subplot(1,2,p) = two side-by-side plots [OK]
Hint: subplot(1,2,p) means two plots side by side [OK]
Common Mistakes:
  • Thinking plots overlay in one panel
  • Assuming vertical stacking instead of horizontal
  • Misreading subplot indices
4. Identify the error in this MATLAB code snippet:
subplot(2,2,5);
plot(rand(5));
medium
A. plot function cannot be used inside subplot.
B. Panel index 5 is invalid for a 2x2 grid.
C. Missing semicolon after subplot command.
D. rand(5) is incorrect syntax.

Solution

  1. Step 1: Check subplot grid size

    A 2x2 grid has only 4 panels numbered 1 to 4.
  2. Step 2: Validate panel index

    Using 5 as the panel index is invalid and causes an error.
  3. Final Answer:

    Panel index 5 is invalid for a 2x2 grid. -> Option B
  4. Quick Check:

    Panel number must be ≤ rows*columns [OK]
Hint: Panel number must not exceed total grid cells [OK]
Common Mistakes:
  • Using panel number larger than grid size
  • Thinking semicolon affects subplot indexing
  • Believing plot can't be inside subplot
5. You want to create a 2x2 grid of plots showing sine waves with different frequencies. Which code correctly sets up the subplots and plots the waves?
hard
A. subplot(2,2); for k = 1:4 plot(sin(k*x)); end
B. for k = 1:4 subplot(4,1,k); x = linspace(0,2*pi,100); plot(x, sin(k*x)); end
C. for k = 1:4 subplot(2,2,k); x = linspace(0,2*pi,100); plot(x, sin(k*x)); end
D. for k = 1:4 subplot(2,2,k+1); x = linspace(0,2*pi,100); plot(x, sin(k*x)); end

Solution

  1. Step 1: Set up correct subplot grid

    subplot(2,2,k) correctly creates a 2x2 grid and selects each panel from 1 to 4.
  2. Step 2: Plot sine waves with increasing frequency

    Inside the loop, x is defined and sin(k*x) is plotted in each subplot panel.
  3. Step 3: Check other options for errors

    for k = 1:4 subplot(4,1,k); x = linspace(0,2*pi,100); plot(x, sin(k*x)); end uses 4x1 grid, not 2x2. subplot(2,2); for k = 1:4 plot(sin(k*x)); end calls subplot once without panel index. for k = 1:4 subplot(2,2,k+1); x = linspace(0,2*pi,100); plot(x, sin(k*x)); end uses k+1 which causes invalid panel 5.
  4. Final Answer:

    for k = 1:4 subplot(2,2,k); x = linspace(0,2*pi,100); plot(x, sin(k*x)); end -> Option C
  5. Quick Check:

    Loop with subplot(2,2,k) plots 4 panels correctly [OK]
Hint: Use subplot(2,2,k) inside loop k=1 to 4 [OK]
Common Mistakes:
  • Using wrong subplot grid size
  • Not specifying panel index in subplot
  • Using invalid panel numbers
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard