end
Indexing for an ObjectWhen you use end
in an object indexing expression, such as A(4:end)
, the end
function returns the index value corresponding to the last element in that dimension.
Classes can overload the end
function to implement specialized behavior. If your class defines an end
method, MATLAB® calls that method to determine how to interpret the expression.
The end
method has the calling syntax:
ind = end(A,k,n)
The arguments are described as follows:
A
is the object
k
is the index in the expression using the end
syntax
n
is the total number of indices in the expression
ind
is the index value to use in the expression
For example, consider the 3-by-5 array A
. When MATLAB encounters the expression:
A(end-1,:)
MATLAB calls the end
method defined for the object A
using the arguments:
ind = end(A,1,2)
These arguments mean that the end
statement occurs in the first index and there are two indices. The end
class method returns the index value for the last element of the first dimension (from which 1
is subtracted in this case). The original expression is evaluated as:
A(3-1,:)
If your class implements an end
method, ensure that it returns a value appropriate for the class.
The end
method for the MyDataClass
example (see Class with Modified Indexing) operates on the contents of the Data
property. The objective of this method is to return a value that can replace end
in any indexing expression, such as:
obj(4:end) obj.Data(2,3:end)
This end
method determines a positive integer value for end
. The method returns the value so that MATLAB can use it in the indexing expression.
function ind = end(obj,k,n) szd = size(obj.Data); if k < n ind = szd(k); else ind = prod(szd(k:end)); end end