
- •Моделирование движения голономных механических систем в пакете Matlab
- •Введение
- •Основы программирования в системе Matlab
- •Работа с матрицами
- •Построение графиков
- •Дескрипторная графика [2] Графические объекты
- •Использование дескрипторов объектов
- •Функции для работы с графическими объектами
- •Установка свойств объекта
- •Определение осей или рисунка
- •Нахождение дескрипторов существующих объектов
- •Скрипты и функции
- •Полезные команды
- •Решение систем дифференциальных уравнений
- •Визуализация движения в Матлабе
- •Библиотека примитивов
- •Окружность
- •Заштрихованная кривая
- •Спираль
- •Пружина
- •Примеры моделирования голономных систем Диск с маятником
- •Визуализация динамики механической системы.
- •Уравнения равновесия системы
- •Динамические эффекты на примере диска с маятником
- •Цилиндр, катающийся в подвижном желобе
- •Заключение
- •Литература
Установка свойств объекта
Все свойства объекта имеют значения по умолчанию. Однако может оказаться полезным изменять настройки некоторых свойств, чтобы модифицировать график. Есть два пути настройки свойств объекта:
Задавать значения свойств при создании объекта.
Устанавливать значение свойства уже существующего объекта.
Установка свойств из команд вычерчивания
Вы можете задать пары свойство-значение объекта как аргумент для многих функций вычерчивания (plot, mesh, surf). Например,
surf(x,y,z,'FaceColor','interp','FaceLighting','gouraud')
Установка свойств существующих объектов
Чтобы изменить значения свойств существующих объектов, можно использовать команду set или редактор свойств. Большинство функций вычерчивания возвращают дескрипторы объектов ими создаваемых, так что есть возможность изменять эти объекты при помощи команды set. К примеру, следующие команды рисуют матрицу 5×5 (создают пять ломаных, по одной на столбец), а затем устанавливают свойство Marker в 'square' и свойство MarkerFaceColor в 'green':
h = plot(magic(5));
set(h,'Marker','s','MarkerFaceColor','g')
В этом случае h – это вектор, содержащий пять дескрипторов, по одному на каждую из ломаных на графике. Команда set устанавливает одинаковые значения для свойств 'Marker' и 'MarkerFaceColor' всех ломаных.
Определение осей или рисунка
При выполнении команды вычерчивания графика Matlab всегда создает оси или рисунок, если они не существуют. Однако хорошим тоном программирования будет указать графическое окно и оси, в которых необходимо изобразить график. Данный алгоритм предотвращает следующие проблемы:
новый график перезаписывает график в активном рисунке (рисунок становится активным (текущим), когда пользователь щелкает по нему мышкой).
текущий рисунок может быть в непредсказуемом состоянии и не вести себя так, как этого ожидает ваша программа.
Следующий пример показывает функцию Matlab, которая вычисляет математическое выражение от входного аргумента x, а затем вычерчивает результаты. Второй вызов функции plot вычерчивает среднее значение результатов красной линией.
Пример.
x = -10:.005:40;
% Вычисляется выражение
y = 1.5*cos(x) + 6*exp(-.1*x) + exp(.07*x).*sin(3*x);
% Вычисляется среднее арифметическое элементов вектора y
ym = mean(y);
hfig = figure('Name','Function and Mean');
hax = axes('Parent',hfig);
plot(hax,x,y)
% К начерченному графику добавляется линия с координатой y, равной среднему арифметическому ym
hold on
plot(hax,[min(x) max(x)],[ym ym],'Color','red')
% На ось Y добавляется метка со значением ym
ylab = get(hax,'YTick');
set(hax,'YTick',sort([ylab ym]))
% Указывается название
title ('y = 1.5cos(x) + 6e^{-0.1x} + e^{0.07x}sin(3x)')
% и метки осей
xlabel('X Axis');
ylabel('Y Axis')
Нахождение дескрипторов существующих объектов
Функция findobj позволяет получать дескрипторы графических объектов поиском объектов с определенными значениями свойств. С помощью findobj можно указать значения любой комбинации свойств, что позволяет легко выделить один объект из множества. findobj также разбирает регулярные выражения (regexp). Подробнее об использовании этой функции читайте в справочнике Matlab.
Нахождение всех объектов определенного типа
Поскольку все объекты имеют свойство Type, которое идентифицирует тип объекта, можно найти дескрипторы всех присутствующих объектов определенного типа. К примеру,
h = findobj('Type','patch');
находит дескрипторы всех объектов patch.
Нахождение объектов с определенным свойством
Для сужения поиска можно определять различные свойства:
h = findobj('Type','line','Color','r','LineStyle',':');
Указанная команда находит все дескрипторы всех пунктирных линий красного цвета.
Ограничение границ поиска
Возможно задать начальную точку в иерархии объектов передачей в качестве первого аргумента дескриптора начального рисунка или осей. К примеру,
h = findobj(gca,'Type','text','String','\pi/2');
находит строку pi/2 только в пределах текущих осей.
Использование функции findobj в качестве аргумента
Поскольку findobj возвращает дескрипторы, ее можно использовать вместо аргумента типа дескриптор. Например,
set(findobj('Type','line','Color','red'),'LineStyle',':')
Этот код находит все красные линии и делает их пунктирными.
Базовые графические объекты
axes |
Cистема координат для отображения графиков. Оси всегда содержатся в пределах графического окна (figure) |
line |
Линия, полученная соединением определяющих ее точек. |
rectangle |
2-D объект, который имеет настраиваемые цвета границ и внутренней области и переменную кривизну (может рисовать эллипсы). |
text |
Строки, позиционируемые в системе координат (axes). |