Structure arrays let you group related data with different types in one variable. This helps organize information clearly.
Structure arrays in MATLAB
structArray = struct('field1', {value1, value2, ...}, 'field2', {value1, value2, ...});
Each field holds data for all elements in the structure array.
Use curly braces {} to assign multiple values to fields for each element.
people = struct('name', {'Alice', 'Bob'}, 'age', {25, 30});
emptyStruct = struct('name', {}, 'age', {});
onePerson = struct('name', {'Charlie'}, 'age', {40});
people(3).name = 'Diana'; people(3).age = 22;
This program creates a structure array with two people, shows it, adds a third person, and shows the updated array.
people = struct('name', {'Alice', 'Bob'}, 'age', {25, 30}); disp('Before adding new person:'); disp(people); people(3).name = 'Charlie'; people(3).age = 40; disp('After adding new person:'); disp(people);
Accessing fields is fast because data is organized by field names.
Adding elements at the end is easy, but inserting in the middle requires shifting elements.
Use structure arrays when you want to keep related but different types of data together.
Time complexity for adding an element at the end is O(1), but inserting in the middle is O(n).
Space complexity grows with the number of elements and fields.
Common mistake: Mixing cell arrays and structure arrays syntax can cause errors.
Structure arrays group related data with different types in one variable.
Use them to organize data by named fields for easy access.
You can add, access, and modify elements using field names and indices.
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
