
- •Моделирование движения голономных механических систем в пакете Matlab
- •Введение
- •Основы программирования в системе Matlab
- •Работа с матрицами
- •Построение графиков
- •Дескрипторная графика [2] Графические объекты
- •Использование дескрипторов объектов
- •Функции для работы с графическими объектами
- •Установка свойств объекта
- •Определение осей или рисунка
- •Нахождение дескрипторов существующих объектов
- •Скрипты и функции
- •Полезные команды
- •Решение систем дифференциальных уравнений
- •Визуализация движения в Матлабе
- •Библиотека примитивов
- •Окружность
- •Заштрихованная кривая
- •Спираль
- •Пружина
- •Примеры моделирования голономных систем Диск с маятником
- •Визуализация динамики механической системы.
- •Уравнения равновесия системы
- •Динамические эффекты на примере диска с маятником
- •Цилиндр, катающийся в подвижном желобе
- •Заключение
- •Литература
Скрипты и функции
Как уже было отмечалось выше, выражения на языке Matlab вводятся в командное окно. Однако существует возможность написания программ и сохранения их в файле. В Matlab такие программы бывают двух видов: скрипты и функции. Скрипты и функции вызываются по имени
Скрипты не принимают никаких входных параметров и ничего не возвращают.3 Они нужны лишь для сохранения в файле некоторой последовательности команд и выражений. Скрипты работают с переменными из рабочего пространства. Текущие значения переменных всегда можно посмотреть в окне Workspace. Также в скриптах можно создавать новые переменные и оперировать с ними. При вызове скрипта, Matlab исполняет команды, находящиеся в файле-скрипте.
В следующем примере рассматривается скрипт factorial.m:
cnt = randi(10);
r = zeros(1, uint32(cnt));
for i = 1:cnt
r(1,i) = factorial(i);
end
bar(r)
Для запуска в программе необходимо указать в качестве текущей папки папку, в которой находится созданный нами файл. Далее в командном окне необходимо набрать название файла и нажать Enter. При этом начнет выполняться последовательность команд, записанная в файле factorial.m. Генерируется случайное целое число cnt на интервале от 1 до 10. Создается вектор размерностью cnt. Его элементы имеют тип uint32, им присваивается значение факториала порядкового номера элемента. Команда bar(r) выводит столбчатую диаграмму вектора r.
Функции – это файлы, которые могут принимать входные значения и возвращать выходные значения. Также как и для скриптов, имеется возможности передачи данных в функцию с использованием механизма глобальных переменных. Исходный код встроенных функций Matlab можно посмотреть, набрав в командной строке type имя_функции.
Как видно из примера, первая строка файла-функции выглядит так:
[выходные_переменные] = [имя_функции] (входные_переменные)
% – знак комментария. Все, следующее за этим символом на строке, не будет обрабатываться Matlab при исполнении кода.
После комментария в функции factorial следует исполняемый Matlab код. В нем можно вызывать системные переменные nargin и nargout, которые возвращают соответственно число входных и выходных переменных. Следует учесть, что переменные n,m,N являются локальными. Это значит, что после выполнения функции эти переменные не будут доступны в общем пространстве переменных, которое обособленно от пространства переменных функции.
Вызываются пользовательские функции так же, как и встроенные функции Matlab. Для вызова пользовательской функции из исполняемой программы необходимо, чтобы файл с функцией находился в одном каталоге с исполняемой программой или добавить необходимый каталог к пути поиска командой addpath(«имя каталога»). Использование команды genpath(«имя каталога») возвращает строку, содержащую название каталога и всех в него входящих подкаталогов. Поэтому использование этой команды совместно с addpath позволяет добавить в поиск все подкатегории, входящие в «имя категории».
Следует помнить, что название функции и файла должны совпадать.
Простейшие функции конвертации
str2num(x) – конвертация числового значения x в строковое
num2str(x) – конвертация строкового значения x в числовое
Глобальные переменные
Чтобы единственная копия переменной была доступна нескольким функциям, при объявлении переменной необходимо указать модификатор global. Чтобы основное рабочее пространство получило доступ к переменной, переменную следует объявить глобальной в командной строке.
Пример.
Создана фунцкия inch2cm, которая переводит английские дюймы в сантиметры:
function out = inch2cm(a)
global coef
out = coef*a;
Для проверки работы функции в командном окне введены следующие команды: