Accessing Properties and Methods in Object Arrays - MATLAB & Simulink (original) (raw)
Main Content
You can access properties and invoke methods of object arrays as a whole or work with individual elements of the array. The examples in this topic use a modified version ofBasicClass
from Creating a Simple Class:
classdef BasicClass properties prop1 {mustBeNumeric} = 0 end methods function r = roundOff(obj) r = round([obj.prop1],2); end function r = multiplyBy(obj,n) r = [obj.prop1]*n; end end end
Create a BasicClass
object array with a loop. The loop assigns the value of i
to prop1
of each array elementa(i)
. For more information, see Create and Initialize Object Arrays.
for i = 1:4 a(i) = BasicClass; a(i).prop1 = i; end
Reference Properties in an Object Array
You can retrieve all values of the same property in an object array using dot notation. This command returns a comma-separated list of all the property values.
ans =
1
ans =
2
ans =
3
ans =
4
To collect the comma-separated list in a vector and assign it to a variable, enclose the object array expression in brackets.
Note
Dynamic properties are defined per object and are therefore not properties of the class. Because of this distinction, even if every element of the array defines the same dynamic property, MATLAB® returns an error if you try to access the dynamic properties of an entire array in a single statement. Index into each object individually to access dynamic property values. For information about classes that can define dynamic properties, see Dynamic Properties — Adding Properties to an Instance.
You can reference the property values of individual elements in an object array using standard MATLAB indexing syntax. For example, return the value of prop1
for the object a(2)
.
You can also return a subset of prop1
values from the object array.
prop1partialValues = [a(2:3).prop1]
Assigning Values to Properties in an Object Array
You cannot assign new values to prop1
of all elements in an object array with a simple assignment statement, but you can use a loop to assign values to all properties in one step. Assign new values to prop1
of all four elements in the array and verify the results.
newValues = [1.4142 1.6180 2.7183 3.1415]; for i = 1:4 a(i).prop1 = newValues(i); end propValues = [a.prop1]
propValues =
1.4142 1.6180 2.7183 3.1415
Assign property values of individual array elements using standard indexing syntax. For example, assign a new value to a(2).prop1
and verify the result.
a(2).prop1 = 1.7321; a(2).prop1
Invoking Methods on an Object Array
When you pass an object array to a method, MATLAB invokes the method on the entire array. Call theroundOff
method of BasicClass
on the object arraya
from the previous section.
ans =
1.4100 1.7300 2.7200 3.1400
Class methods must be designed to handle the size and shape of the object arrays you need to create. InBasicClass
, the roundOff
andmultiplyBy
methods are designed to handle arrays of any size by enclosing the property references in square brackets.
r = round([obj.prop1],2);
A method that only works on scalar instances errors if passed a nonscalar array. For more information, see Vectorize Methods.
You can also use standard function notation to invoke a method for one element of the object array. For example, call the roundOff
method ona(3)
.
Use a similar syntax for a method that takes one or more input arguments.