Определение Индексации конца для Объекта
Когда вы используете end
в выражении индексации объекта, таком как A(4:end)
, функция end
возвращает индексное значение, соответствующее последнему элементу в той размерности.
Классы могут перегрузить функцию end
, чтобы реализовать специализированное поведение. Если ваш класс задает метод end
, MATLAB® вызывает тот метод, чтобы определить, как интерпретировать выражение.
Метод 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
происходит в первом индексе и существует два индекса. Метод класса end
возвращает индексное значение для последнего элемента первой размерности (из которого 1
вычтен в этом случае). Исходное выражение оценено как:
A(3-1,:)
Если ваш класс реализует метод end
, гарантируйте, что он возвращает значение, подходящее для класса.
Метод 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