Structure arrays in MATLAB - Time & Space Complexity
When working with structure arrays in MATLAB, it is important to understand how the time to access or modify data grows as the array gets bigger.
We want to know how the number of operations changes when we work with more elements in the structure array.
Analyze the time complexity of the following code snippet.
% Create a structure array with n elements
for i = 1:n
students(i).name = sprintf('Student%d', i);
students(i).score = randi(100);
end
% Access all scores and sum them
totalScore = 0;
for i = 1:n
totalScore = totalScore + students(i).score;
end
This code creates a structure array of students with names and scores, then sums all the scores.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through the structure array to assign fields and then to access the scores.
- How many times: Each loop runs exactly n times, where n is the number of elements in the structure array.
As the number of students (n) increases, the total number of operations grows proportionally.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 20 (10 for creation + 10 for summing) |
| 100 | About 200 (100 + 100) |
| 1000 | About 2000 (1000 + 1000) |
Pattern observation: The operations double when the input size doubles, showing a steady, linear growth.
Time Complexity: O(n)
This means the time it takes grows directly in proportion to the number of elements in the structure array.
[X] Wrong: "Accessing fields in a structure array is instant and does not depend on the number of elements."
[OK] Correct: Accessing each element's field requires going through each element, so the time grows with the number of elements.
Understanding how structure arrays scale helps you write efficient MATLAB code and answer questions about data handling in interviews confidently.
"What if we used vectorized operations or built-in functions instead of loops? How would the time complexity change?"
Practice
Solution
Step 1: Understand the purpose of structure arrays
Structure arrays allow grouping of different types of data under named fields.Step 2: Compare options with the definition
Only To group related data with different types under named fields correctly describes this use; others describe unrelated concepts.Final Answer:
To group related data with different types under named fields -> Option CQuick Check:
Structure arrays = group data by fields [OK]
- Thinking structures only hold numeric data
- Confusing structures with loops or matrices
Solution
Step 1: Recall MATLAB struct syntax
MATLAB uses struct('field1', value1, 'field2', value2) to create structures.Step 2: Check each option's syntax
person = struct('Name', 'Alice', 'Age', 30); uses correct parentheses and quotes. Options B, C, D use invalid syntax.Final Answer:
person = struct('Name', 'Alice', 'Age', 30); -> Option AQuick Check:
struct uses parentheses and quotes [OK]
- Using square or curly brackets instead of parentheses
- Omitting quotes around field names
student(1).Name = 'John'; student(1).Score = 85; student(2).Name = 'Jane'; student(2).Score = 92; disp(student(2).Name);
Solution
Step 1: Understand structure array indexing
student(2) accesses the second element; .Name accesses the 'Name' field.Step 2: Identify the value stored in student(2).Name
It is 'Jane' as assigned in the code.Final Answer:
Jane -> Option AQuick Check:
student(2).Name = 'Jane' [OK]
- Confusing index 1 and 2
- Accessing Score instead of Name
car.Make = 'Toyota'; car(1).Model = 'Corolla'; car(1).Year = 2020;
Solution
Step 1: Analyze structure assignment styles
First line creates scalar structure car with field Make. Next lines assign to car(1), valid for scalar structures.Step 2: Understand MATLAB structure array rules
MATLAB allows indexing scalar structures and dynamically adding fields; no error occurs.Final Answer:
No error, code runs fine -> Option DQuick Check:
Scalar struct indexing + field addition works [OK]
- Thinking scalar and array assignments cannot mix
- Believing field names must be numeric
- Assuming missing semicolons cause errors
books with fields Title and Pages, how do you create a new structure array shortBooks containing only books with less than 100 pages?Solution
Step 1: Extract numeric array of Pages
Use [books.Pages] to get all Pages values as a numeric array.Step 2: Use logical indexing to filter
Compare with < 100 to get logical indices, then index books with these.Step 3: Check syntax correctness
shortBooks = books([books.Pages] < 100); correctly uses parentheses and logical indexing; others are incorrect.Final Answer:
shortBooks = books([books.Pages] < 100); -> Option BQuick Check:
Logical indexing with [books.Pages] works [OK]
- Using curly braces {} instead of parentheses ()
- Forgetting to use brackets [] around field extraction
- Using wrong comparison operator
Ready to prove it?
Pass the test and this pattern moves unknown
