|
|
|||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
| Вход | |||||||||||||||||||||||||||||||||
|
Раздел "MATLAB\MATLAB"
В.Г.Потемкин "Введение в Matlab" (v 5.3) В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель 8.3. Переопределение классов Во многих случаях можно изменить поведение операторов и функций системы MATLAB, когда в качестве аргумента выступает объект. Это осуществляется путем переопределения соответствующих функций. Переопределение класса открывает возможность обработки с помощью этой функции различных типов данных при произвольном количестве входных аргументов. Переопределение арифметических операций. Каждый встроенный оператор в системе MATLAB имеет имя. Поэтому любой оператор может быть переопределен путем создания М-файла с соответствующим названием в каталоге классов. Например, если p или q - полиномы, то выражение вида p + q задает вызов метода @polynom/plus.m, если он существует. В данном случае это M-файл вида: function r = plus(p, q) Прежде всего М-функция метода преобразует оба аргумента входа к классу polynom. Это гарантирует, что выражения типа p + 1, которые включают как объект типа polynom, так и объект типа double, будут вычисляться правильно. Функция затем обращается к двум векторам коэффициентов и в случае необходимости, дополняет один из них с нулями, чтобы выравнять их длины. Фактическое сложение - просто сумма двух векторов коэффициентов, к которой применяется в третий раз конструктор polynom, чтобы сформировать правильный тип результата. Другой пример - это метод @polynom/mtimes.m, который вычисляет произведение полиномов p*q. Буква m в начале имени функции обусловлена тем, что это есть переопределение функции умножения матриц. Умножение двух многочленов - просто свертка их векторов коэффициентов. function r = mtimes(p, q) Операторы q = p + 1 используя описанные функции, дают следующие результаты q = x^3 - 2*x - 4 Переопределение операторов. Табл. 8.1 устанавливает символьные имена для большинства встроенных операторов системы MATLAB’.
Переопределение функций. Можно переопределить любую М-функцию, создавая функцию с тем же именем в каталоге класса. Когда функция применяется к объекту, MATLAB прежде всего просматривает каталог соответствующего класса, а уже потом другие пути доступа. Чтобы переопределить функцию plot для некоторого класса, надо просто разместить М-файл plot.m в соответствующем каталоге класса. Далее приведено несколько примеров, относящихся к объектам из класса polynom. В состав ядра системы MATLAB включены функции для работы с полиномами, описываемыми векторами их коэффициентов. При создании новых полиномиальных объектов эти функции должны быть переопределены. Во многих случаях переопределяемая функция может просто применять исходную функцию к полю соответствующей структуры. Например, имеется метод @polynom/roots.m: function r = roots(p) Оператор roots(p) дает следующий результат roots(p) Функция polyval вычисляет полином для заданного множества точек. В данном случае это метод @polynom/polyval.m. Он основан на методе Горнера. function y = polyval(p,x) Обе эти функции используются при переопределении функции plot. Область изменения независимой переменной выбирается, чтобы быть немного большей, чем интервал, содержащий все действительные корни. Затем используется функция polyval, чтобы вычислить значения полинома в нескольких сотнях точек области. Результирующий метод @polynom/plot.m имеет вид: function Наконец, рассмотрим метод @polynom/diff.m, который позволяет дифференцировать полиномы путем умножения коэффициентов на соответствующие степени переменной: function q = diff(p) Функция methods('polynom') или в форме команды methods polynom выводит на экран все методы для данного класса в следующем виде: methods polynom Большинство этих методов будет вызвано при выполнении операторов p = polynom([1 0 -2 -5]);
Рис. 8.2 В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель
|
|
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
| На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
| E-mail: | ||
| Информация на сайте была обновлена 11.05.2004 |
Copyright 2001-2004 SoftLine Co Наши баннеры |
|