end
Индексация для объектаКогда вы используете end
в выражении индексации объектов, таком как A(4:end)
, а end
функция возвращает значение индекса, соответствующее последнему элементу в этом измерении.
Классы могут перегрузить end
функция для реализации специализированного поведения. Если ваш класс задает end
метод, MATLAB® вызывает этот метод, чтобы определить, как интерпретировать выражение.
The end
метод имеет синтаксис вызова:
ind = end(A,k,n)
Аргументы описываются следующим образом:
A
является объектом
k
- индекс в выражении, использующем end
синтаксис
n
- общее количество индексов в выражении
ind
- значение индекса, используемое в выражении
Для примера рассмотрим массив 3 на 5 A
. Когда MATLAB встречается с выражением:
A(end-1,:)
MATLAB вызывает end
метод, заданный для объекта A
использование аргументов:
ind = end(A,1,2)
Эти аргументы означают, что end
оператор встречается в первом индексе, и существует два индекса. The end
метод class возвращает значение индекса для последнего элемента первой размерности (от которого 1
вычитается в этом случае). Исходное выражение оценивается как:
A(3-1,:)
Если ваш класс реализует end
убедитесь, что метод возвращает значение, соответствующее классу.
The end
метод для MyDataClass
пример (см. Класс с измененным индексированием) работает с содержимым Data
свойство. Цель этого метода состоит в том, чтобы вернуть значение, которое может заменить end
в любом выражении индексации, таком как:
obj(4:end) obj.Data(2,3:end)
Этот end
метод определяет положительное целое значение для end
. Метод возвращает значение, чтобы MATLAB мог использовать его в выражении индексации.
function ind = end(obj,k,n) szd = size(obj.Data); if k < n ind = szd(k); else ind = prod(szd(k:end)); end end