Bird
Raised Fist0
MATLABdata~5 mins

Structures and field access in MATLAB

Choose your learning style10 modes available
Introduction

Structures help you group related information together in one place. You can easily organize and access data by names instead of numbers.

You want to store information about a person like name, age, and height together.
You need to keep details of a book such as title, author, and year in one variable.
You want to organize sensor data with fields like temperature, humidity, and time.
You want to pass multiple related values to a function without using many separate variables.
Syntax
MATLAB
structName.fieldName = value;

Use dot . to access or create fields inside a structure.

You can create a structure by assigning values to fields directly.

Examples
This creates a structure person with fields name and age.
MATLAB
person.name = 'Alice';
person.age = 30;
Here, book is a structure holding information about a book.
MATLAB
book.title = 'Matlab Basics';
book.author = 'John';
book.year = 2023;
Structure data stores sensor readings.
MATLAB
data.temperature = 22.5;
data.humidity = 60;
Sample Program

This program creates a structure student with three fields and prints each field's value.

MATLAB
student.name = 'Bob';
student.age = 21;
student.grade = 'A';

% Display student information
fprintf('Name: %s\n', student.name);
fprintf('Age: %d\n', student.age);
fprintf('Grade: %s\n', student.grade);
OutputSuccess
Important Notes

You can add new fields anytime by assigning a value to a new field name.

Use isfield(structure, 'fieldName') to check if a field exists.

Structures can hold different types of data in each field, like numbers, text, or arrays.

Summary

Structures group related data using named fields.

Access fields with dot notation: structure.field.

Structures make your data organized and easy to use.

Practice

(1/5)
1. What is the correct way to access the field age from a structure person in MATLAB?
easy
A. person['age']
B. person.age
C. person->age
D. person.age()

Solution

  1. Step 1: Understand MATLAB structure field access

    In MATLAB, fields of a structure are accessed using dot notation without parentheses or brackets.
  2. Step 2: Identify correct syntax for field access

    The correct syntax is structure.field, so person.age is correct.
  3. Final Answer:

    person.age -> Option B
  4. Quick Check:

    Use dot notation for fields [OK]
Hint: Use dot notation to access structure fields in MATLAB [OK]
Common Mistakes:
  • Using parentheses like a function call
  • Using brackets like a dictionary
  • Using arrow notation from other languages
2. Which of the following is the correct way to create a structure car with fields make and year in MATLAB?
easy
A. car = struct(make = 'Toyota', year = 2020);
B. car = {make: 'Toyota', year: 2020};
C. car = struct['make' => 'Toyota', 'year' => 2020];
D. car = struct('make', 'Toyota', 'year', 2020);

Solution

  1. Step 1: Recall MATLAB struct creation syntax

    MATLAB uses the struct function with pairs of field names and values as strings and values.
  2. Step 2: Match correct syntax

    car = struct('make', 'Toyota', 'year', 2020); uses struct('make', 'Toyota', 'year', 2020), which is correct MATLAB syntax.
  3. Final Answer:

    car = struct('make', 'Toyota', 'year', 2020); -> Option D
  4. Quick Check:

    Use struct('field', value, ...) to create structures [OK]
Hint: Use struct('field', value) pairs to create structures [OK]
Common Mistakes:
  • Using JSON or dictionary syntax
  • Using equal signs inside struct()
  • Using brackets instead of parentheses
3. What is the output of the following MATLAB code?
person.name = 'Alice';
person.age = 30;
disp(person.age);
medium
A. 'Alice'
B. name
C. 30
D. Error: Undefined variable

Solution

  1. Step 1: Understand structure field assignment

    The code assigns 'Alice' to person.name and 30 to person.age.
  2. Step 2: Identify what disp(person.age) shows

    The disp function prints the value of person.age, which is 30.
  3. Final Answer:

    30 -> Option C
  4. Quick Check:

    disp shows the value of the accessed field [OK]
Hint: disp(struct.field) prints the field's value [OK]
Common Mistakes:
  • Confusing field names with values
  • Expecting the field name instead of value
  • Syntax errors from missing semicolons
4. Consider this MATLAB code snippet:
data = struct('x', 10, 'y', 20);
disp(data.z);
What will happen when this code runs?
medium
A. Error: Reference to non-existent field 'z'.
B. Displays 0
C. Displays empty array []
D. Displays 20

Solution

  1. Step 1: Check structure fields

    The structure data has fields x and y, but no field z.
  2. Step 2: Accessing a non-existent field

    Trying to access data.z causes MATLAB to throw an error about the missing field.
  3. Final Answer:

    Error: Reference to non-existent field 'z'. -> Option A
  4. Quick Check:

    Accessing missing fields causes an error [OK]
Hint: Access only existing fields; missing fields cause errors [OK]
Common Mistakes:
  • Assuming missing fields return 0 or empty
  • Ignoring error messages
  • Confusing field names with variable names
5. You have a structure array students with fields name and score. How do you create a new structure passed containing only students with score >= 50?
hard
A. passed = students([students.score] >= 50);
B. passed = struct('name', students.name, 'score', students.score >= 50);
C. passed = students.score >= 50;
D. passed = students{students.score >= 50};

Solution

  1. Step 1: Understand structure arrays and logical indexing

    In MATLAB, [students.score] creates an array of scores. Logical indexing selects elements where condition is true.
  2. Step 2: Apply logical indexing to filter students

    The expression students([students.score] >= 50) selects only students with scores 50 or above.
  3. Final Answer:

    passed = students([students.score] >= 50); -> Option A
  4. Quick Check:

    Use logical indexing on structure arrays [OK]
Hint: Use logical indexing with [struct.field] to filter arrays [OK]
Common Mistakes:
  • Trying to assign logical array directly
  • Using curly braces instead of parentheses
  • Creating new struct without filtering
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