Моделирование в системе MATLAB. Часть 1. Основы работы в MATLAB. Терёхин В.В. - 223 стр.

UptoLike

Составители: 

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