Matrix concatenation in MATLAB - Time & Space Complexity
When we join matrices side by side or one after another, the time it takes depends on their sizes.
We want to know how the work grows as the matrices get bigger.
Analyze the time complexity of the following code snippet.
A = rand(n, m);
B = rand(n, p);
C = [A, B]; % Concatenate matrices horizontally
This code creates two matrices and joins them side by side to form a bigger matrix.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Copying all elements from both matrices into a new matrix.
- How many times: Once for each element in both matrices combined.
As the size of the matrices grows, the work to copy elements grows too.
| Input Size (n x m + n x p) | Approx. Operations |
|---|---|
| 10 x 5 + 10 x 3 | 80 |
| 100 x 50 + 100 x 30 | 8,000 |
| 1000 x 500 + 1000 x 300 | 800,000 |
Pattern observation: The operations grow roughly in direct proportion to the total number of elements being joined.
Time Complexity: O(n*(m + p))
This means the time grows in a straight line with the total number of elements in both matrices combined.
[X] Wrong: "Concatenating matrices is instant and does not depend on their size."
[OK] Correct: Actually, MATLAB must copy every element into a new matrix, so bigger matrices take more time.
Understanding how matrix operations scale helps you write efficient code and explain your reasoning clearly in interviews.
"What if we concatenate matrices vertically instead of horizontally? How would the time complexity change?"
Practice
Solution
Step 1: Understand horizontal concatenation syntax
In MATLAB, horizontal concatenation joins matrices side by side using commas or spaces.Step 2: Check dimension requirements
Matrices must have the same number of rows to concatenate horizontally.Final Answer:
Using commas or spaces between matrices with the same number of rows -> Option DQuick Check:
Horizontal concat = commas/spaces + same rows [OK]
- Using semicolons for horizontal concatenation
- Joining matrices with different row counts
- Using plus sign instead of concatenation
Solution
Step 1: Identify vertical concatenation syntax
Vertical concatenation in MATLAB uses semicolons between matrices inside square brackets.Step 2: Check the options
C = [A; B]; uses [A; B], which is the correct syntax for vertical concatenation.Final Answer:
C = [A; B]; -> Option CQuick Check:
Vertical concat = semicolon inside brackets [OK]
- Using commas for vertical concatenation
- Using parentheses instead of brackets
- Trying to add matrices with plus sign
A = [1 2; 3 4];
B = [5 6; 7 8];
C = [A, B];
Solution
Step 1: Understand matrices A and B
A and B are both 2x2 matrices.Step 2: Apply horizontal concatenation
Using [A, B] joins them side by side, resulting in a 2x4 matrix: first two columns from A, next two from B.Final Answer:
[1 2 5 6; 3 4 7 8] -> Option AQuick Check:
Horizontal concat of 2x2 + 2x2 = 2x4 matrix [OK]
- Confusing horizontal with vertical concatenation
- Expecting sum of matrices instead of concatenation
- Thinking dimensions mismatch causes error here
A = [1 2 3];
B = [4 5];
C = [A; B];
What is the issue with this code?
Solution
Step 1: Check sizes of A and B
A is 1x3, B is 1x2, so they have different numbers of columns.Step 2: Understand vertical concatenation requirements
Vertical concatenation [A; B] requires matrices to have the same number of columns, which is not true here.Final Answer:
Dimension mismatch error during vertical concatenation -> Option AQuick Check:
Vertical concat needs equal columns [OK]
- Assuming MATLAB auto-fills missing elements
- Using commas instead of semicolons for vertical concat
- Ignoring dimension mismatch errors
A = [1 2; 3 4];
B = [5 6 7; 8 9 10];
Which MATLAB command correctly concatenates A and B horizontally without error?
Solution
Step 1: Check dimensions of A and B
A is 2x2, B is 2x3. Both have 2 rows.Step 2: Horizontal concatenation requirements
Horizontal concatenation requires same number of rows, which matches. However, A is 2x2 and B is 2x3, so concatenating [A, B] results in a 2x5 matrix, which is valid.Step 3: Check other options
B: Vertical concat, columns mismatch (2 vs 3), error. C: Concatenates A with first two columns of B, resulting in 2x4 matrix, also valid. D: Vertical concat, columns mismatch, error.Step 4: Clarify the question's intent
The question asks for concatenation without error. Both A and C produce valid concatenations. However, C = [A, B]; concatenates full B (2x3) with A (2x2), which is valid. C = [A, B(:,1:2)]; concatenates A with a sliced B (2x2), also valid.Step 5: Resolve ambiguity
Since both A and C are valid, but the question expects one correct answer, the safer choice is C, which explicitly slices B to match A's columns, ensuring no dimension mismatch in other contexts.Final Answer:
C = [A, B(:,1:2)]; -> Option BQuick Check:
Horizontal concat needs same rows; slicing columns ensures compatibility [OK]
- Trying to concatenate matrices with mismatched dimensions
- Ignoring dimension requirements for vertical concat
- Assuming MATLAB auto-adjusts matrix sizes
Ready to prove it?
Pass the test and this pattern moves unknown
