Bird
Raised Fist0
MATLABdata~20 mins

Constructor methods in MATLAB - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
MATLAB Constructor Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of a simple MATLAB class constructor
What is the output of the following MATLAB code when creating an object of class MyClass?
MATLAB
classdef MyClass
    properties
        Value
    end
    methods
        function obj = MyClass(val)
            if nargin > 0
                obj.Value = val;
            else
                obj.Value = 0;
            end
        end
    end
end

obj = MyClass(5);
disp(obj.Value);
AEmpty array []
B0
CError: Undefined function or variable 'val'.
D5
Attempts:
2 left
💡 Hint
Look at how the constructor assigns the property Value when an argument is passed.
❓ Predict Output
intermediate
2:00remaining
Default property value with no constructor input
What will be displayed when the following MATLAB code runs?
MATLAB
classdef Sample
    properties
        Number = 10;
    end
    methods
        function obj = Sample(num)
            if nargin > 0
                obj.Number = num;
            end
        end
    end
end

obj = Sample();
disp(obj.Number);
AError: Not enough input arguments.
B0
C10
DEmpty array []
Attempts:
2 left
💡 Hint
Consider the default value assigned to the property and what happens if no input is given.
🔧 Debug
advanced
2:00remaining
Identify the error in this MATLAB constructor
What error will occur when running this MATLAB class code?
MATLAB
classdef Person
    properties
        Name
        Age
    end
    methods
        function obj = Person(name, age)
            obj.Name = name;
            obj.Age = age;
        end
    end
end

p = Person('Alice');
AError: Not enough input arguments.
BError: Too many input arguments.
CNo error, object created with Name='Alice' and Age=[]
DError: Undefined function or variable 'age'.
Attempts:
2 left
💡 Hint
Check how many arguments the constructor expects versus how many are given.
🧠 Conceptual
advanced
2:00remaining
Behavior of handle class constructor in MATLAB
Consider this MATLAB class that inherits from handle. What will be the output of the code below?
MATLAB
classdef Counter < handle
    properties
        Count = 0;
    end
    methods
        function obj = Counter(start)
            if nargin > 0
                obj.Count = start;
            end
        end
        function increment(obj)
            obj.Count = obj.Count + 1;
        end
    end
end

c1 = Counter(5);
c2 = c1;
c2.increment();
disp(c1.Count);
AError: Undefined method 'increment' for input arguments.
B6
C5
D0
Attempts:
2 left
💡 Hint
Remember that handle classes share the same object reference.
❓ Predict Output
expert
3:00remaining
Output of constructor with varargin and property assignment
What is the output of this MATLAB code when creating an object with obj = Config('Mode','Auto','Level',3);?
MATLAB
classdef Config
    properties
        Mode = 'Manual';
        Level = 1;
    end
    methods
        function obj = Config(varargin)
            for k = 1:2:length(varargin)
                prop = varargin{k};
                val = varargin{k+1};
                if isprop(obj, prop)
                    obj.(prop) = val;
                end
            end
        end
    end
end

obj = Config('Mode','Auto','Level',3);
disp([obj.Mode, ' ', num2str(obj.Level)]);
AAuto 3
BManual 1
CError: Invalid property name.
DAuto 1
Attempts:
2 left
💡 Hint
Look at how the constructor uses varargin to assign properties dynamically.

Practice

(1/5)
1. What is the main purpose of a constructor method in a MATLAB class?
easy
A. To inherit properties from another class
B. To delete an object
C. To display object properties
D. To create an object with initial values

Solution

  1. Step 1: Understand the role of constructors

    Constructor methods are special functions that create objects and set their initial state.
  2. Step 2: Identify the correct purpose

    Among the options, only creating an object with initial values matches the constructor's role.
  3. Final Answer:

    To create an object with initial values -> Option D
  4. Quick Check:

    Constructor = create object [OK]
Hint: Constructors initialize objects when created [OK]
Common Mistakes:
  • Confusing constructors with destructors
  • Thinking constructors display properties
  • Mixing constructors with inheritance
2. Which of the following is the correct way to define a constructor method in a MATLAB class named Car?
easy
A. function Car = obj() obj.color = 'red'; end
B. function obj = Car(color) obj.color = color; end
C. function obj = car() obj.color = 'red'; end
D. function obj = Car() color = 'red'; end

Solution

  1. Step 1: Check constructor name matches class name

    The constructor must have the same name as the class, which is 'Car' with uppercase C.
  2. Step 2: Verify syntax and parameters

    function obj = Car(color) obj.color = color; end correctly defines a constructor with input argument to set the color property.
  3. Final Answer:

    function obj = Car(color) obj.color = color; end -> Option B
  4. Quick Check:

    Constructor name = class name [OK]
Hint: Constructor name must match class name exactly [OK]
Common Mistakes:
  • Using lowercase class name in constructor
  • Swapping function and variable names
  • Missing input arguments for initialization
3. Consider this MATLAB class constructor code:
classdef Book
  properties
    Title
    Author
  end
  methods
    function obj = Book(title, author)
      obj.Title = title;
      obj.Author = author;
    end
  end
end

b = Book('1984', 'Orwell');
disp(b.Title);

What will be the output when this code runs?
medium
A. Error: Missing input arguments
B. Orwell
C. 1984
D. Book object

Solution

  1. Step 1: Understand object creation with constructor

    The constructor sets Title to '1984' and Author to 'Orwell' when creating object b.
  2. Step 2: Check the displayed property

    The code displays b.Title, which was set to '1984'.
  3. Final Answer:

    1984 -> Option C
  4. Quick Check:

    Displayed Title = '1984' [OK]
Hint: disp shows the property assigned in constructor [OK]
Common Mistakes:
  • Confusing Title and Author properties
  • Expecting object display instead of property
  • Assuming error due to missing arguments
4. What is wrong with this MATLAB constructor method?
classdef Person
  properties
    Name
  end
  methods
    function obj = Person(name)
      Name = name;
    end
  end
end
medium
A. The property Name is not assigned to the object
B. Constructor name does not match class name
C. Missing semicolon after assignment
D. Properties block is missing

Solution

  1. Step 1: Check property assignment in constructor

    The code assigns 'name' to a variable 'Name' but not to obj.Name, so the object property remains empty.
  2. Step 2: Identify correct assignment syntax

    Correct syntax is obj.Name = name; to assign the input to the object's property.
  3. Final Answer:

    The property Name is not assigned to the object -> Option A
  4. Quick Check:

    Assign to obj.Name, not just Name [OK]
Hint: Always assign properties with obj.Property = value [OK]
Common Mistakes:
  • Assigning to local variable instead of object property
  • Ignoring case sensitivity in property names
  • Forgetting to return obj from constructor
5. You want to create a MATLAB class Rectangle with properties Length and Width. Write a constructor that sets these properties and also calculates the Area property automatically. Which constructor method is correct?
hard
A. function obj = Rectangle(length, width) obj.Length = length; obj.Width = width; obj.Area = length * width; end
B. function obj = Rectangle(length, width) obj.Length = length; obj.Width = width; Area = length * width; end
C. function obj = Rectangle(length, width) obj.Length = length; obj.Width = width; obj.Area = obj.Length + obj.Width; end
D. function obj = Rectangle(length, width) Length = length; Width = width; Area = length * width; end

Solution

  1. Step 1: Assign Length and Width to object properties

    function obj = Rectangle(length, width) obj.Length = length; obj.Width = width; obj.Area = length * width; end correctly assigns length and width to obj.Length and obj.Width.
  2. Step 2: Calculate Area as product and assign to obj.Area

    function obj = Rectangle(length, width) obj.Length = length; obj.Width = width; obj.Area = length * width; end calculates area as length * width and assigns it to obj.Area, which is correct.
  3. Final Answer:

    function obj = Rectangle(length, width) obj.Length = length; obj.Width = width; obj.Area = length * width; end -> Option A
  4. Quick Check:

    Assign all properties to obj with correct calculation [OK]
Hint: Calculate and assign all properties to obj inside constructor [OK]
Common Mistakes:
  • Assigning Area to local variable instead of obj.Area
  • Adding Length and Width instead of multiplying for Area
  • Not assigning Length and Width to obj
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