Составители:
221
8.3 Переопределение классов
Во многих случаях можно изменить поведение операторов и
функций системы MATLAB, когда в качестве аргумента выступает
объект. Это осуществляется путем переопределения соответствующих
функций. Переопределение класса открывает возможность обработки
с помощью этой функции различных типов данных при произвольном
количестве входных аргументов.
Переопределение арифметических операций. Каждый встро-
енный оператор в системе MATLAB имеет имя
. Поэтому любой опе-
ратор может быть переопределен путем создания М-файла с соответ-
ствующим названием в каталоге классов. Например, если p или q -
полиномы, то выражение вида p + q задает вызов метода
@polynom/plus.m, если он существует.
В данном случае это M-файл вида:
function r = plus(p, q)
% POLYNOM/PLUS Реализовать операцию p + q для объ-
ектов polynom..
p = polynom(p);
q = polynom(q);
k = length(q.c) - length(p.c);
r = polynom([zeros(1, k) p.c] + [zeros(1, -k) q.c]);
Прежде
всего М-функция метода преобразует оба аргумента
входа к классу polynom. Это гарантирует, что выражения типа p + 1,
которые включают как объект типа polynom, так и объект типа
double, будут вычисляться правильно.
Функция затем обращается к двум векторам коэффициентов и
в случае необходимости, дополняет один из них с нулями, чтобы вы-
равнять
их длины. Фактическое сложение - просто сумма двух векто-
ров коэффициентов, к которой применяется в третий раз конструктор
polynom, чтобы сформировать правильный тип результата.
Другой пример - это метод @polynom/mtimes.m, который
вычисляет произведение полиномов p*q. Буква m в начале имени
функции обусловлена тем, что это есть переопределение функции
умножения матриц. Умножение двух
многочленов - просто свертка их
векторов коэффициентов.
function r = mtimes(p, q)
% POLYNOM/MTIMES Реализует операцию умножения
p * q для объектов
% polynom.
8.3 Переопределение классов Во многих случаях можно изменить поведение операторов и функций системы MATLAB, когда в качестве аргумента выступает объект. Это осуществляется путем переопределения соответствующих функций. Переопределение класса открывает возможность обработки с помощью этой функции различных типов данных при произвольном количестве входных аргументов. Переопределение арифметических операций. Каждый встро- енный оператор в системе MATLAB имеет имя. Поэтому любой опе- ратор может быть переопределен путем создания М-файла с соответ- ствующим названием в каталоге классов. Например, если p или q - полиномы, то выражение вида p + q задает вызов метода @polynom/plus.m, если он существует. В данном случае это M-файл вида: function r = plus(p, q) % POLYNOM/PLUS Реализовать операцию p + q для объ- ектов polynom.. p = polynom(p); q = polynom(q); k = length(q.c) - length(p.c); r = polynom([zeros(1, k) p.c] + [zeros(1, -k) q.c]); Прежде всего М-функция метода преобразует оба аргумента входа к классу polynom. Это гарантирует, что выражения типа p + 1, которые включают как объект типа polynom, так и объект типа double, будут вычисляться правильно. Функция затем обращается к двум векторам коэффициентов и в случае необходимости, дополняет один из них с нулями, чтобы вы- равнять их длины. Фактическое сложение - просто сумма двух векто- ров коэффициентов, к которой применяется в третий раз конструктор polynom, чтобы сформировать правильный тип результата. Другой пример - это метод @polynom/mtimes.m, который вычисляет произведение полиномов p*q. Буква m в начале имени функции обусловлена тем, что это есть переопределение функции умножения матриц. Умножение двух многочленов - просто свертка их векторов коэффициентов. function r = mtimes(p, q) % POLYNOM/MTIMES Реализует операцию умножения p * q для объектов % polynom. 221
Страницы
- « первая
- ‹ предыдущая
- …
- 221
- 222
- 223
- 224
- 225
- …
- следующая ›
- последняя »