- •А.К. Ефремов интегрированная
- •Рекомендовано редсоветом мгту им. Н.Э. Баумана
- •Isbn 5-7038-2301-3 мгту им. Н.Э. Баумана, 2003
- •1. Интерфейс системЫ matlab
- •1.1. Программная группа matlab
- •1.2. Командное окно matlab
- •1.2.1. Главное меню
- •1.2.2. Панель инструментов
- •1.3. Настройка параметров рабочего пространства
- •1.4. Справочная система matlab
- •2. Работа в режиме прямых вычислений
- •3. Базовые объекты системы matlab
- •3.1. Способы формирования матриц и векторов
- •3.2. Матричные операции и функции
- •3.3. Решение линейных уравнений
- •3.4. Вычисление корней полиномов
- •3.5. Обработка данных
- •4. Графические средства системы matlab
- •4.1. Графические объекты на плоскости
- •4.1.1. Функция plot
- •4.1.2. Функции fplot и ezplot
- •4.1.3. Другие графические функции
- •4.1.5. Обработка данных
- •4.2. Построение трехмерных поверхностей и тел
- •4.2.1. Основные графические функции
- •4.2.2. Дополнительные возможности
- •5. Основы программирования в среде matlab
- •5.1. Общие положения
- •5.2. Примеры простых программ
- •Xlabel('sin(X)') % Надпись по оси х
- •Xlabel('X') % Надпись по оси абсцисс
- •5.3. Программа с использованием внешней функции
- •5.4. Дополнительные программы
- •5.4.1. Дифференцирование функций
- •Xlabel('Число элементов массивов')
- •Xlabel('Число элементов массивов')
- •5.4.2. Функции eval, feval
- •Xlabel(‘t’), ylabel(‘y, dy/dt’)
- •Xlabel(‘y’), ylabel(‘dy/dt’)
- •6. Символьные вычисления
- •6.1. Определение символьной переменной
- •6.2. Основные функции
- •6.3. Математический анализ
- •6.3.1. Функция limit – предел функции одной переменной
- •6.3.2. Функция diff – дифференцирование функции одной переменной
- •6.3.3. Функция int – интегрирование функции одной переменной
- •6.3.4. Функция symsum – суммирование членов рядов
- •6.3.5. Функция taylor – разложение функции в ряд Тэйлора
- •6.4. Символьное решение уравнений
- •6.4.1. Решение отдельных уравнений
- •6.4.2. Решение систем уравнений
- •6.4.3. Решение дифференциальных уравнений
- •7. Пакет моделирования динамических систем simulink
- •7.1. Рабочая среда Simulink
- •7.2. Представление динамической системы в виде структурной схемы
- •7.3. Основные приемы работы в среде Simulink
- •7.4. Модель с ветвлением соединений
- •7. 5. Интегрирование дифференциального уравнения
- •Список литературы
- •Оглавление
- •Приложение
- •Разделы справочной системы
- •Программирования и отладки программ
- •Графические средства matlab
- •Символьные вычисления (symbolic math toolbox)
4.1.3. Другие графические функции
Функция bar (столбцовая диаграмма):
bar(y,<ширина>,S) – вывод каждого элемента вектора Y в виде столбца; по умолчанию его ширина 0.8, но может быть изменена; S – строковый аргумент;
bar(x,y,<ширина>,S) – зависимость y(x);
barh – аналогичная функция, но столбцы выводит в горизонтальной ориентации.
В случае двухмерного массива может быть введен параметр <стиль> – ‘group’ или ‘stack’:
» x=-4:0.1:4; y=exp(-x.^2);
» bar(y)
» bar(y,0.4)
» bar(x,y,0.4)
» barh(x,y,0.4)
Пример построения двухмерной диаграммы:
» y=round(rand(5,4)*10);
» bar(y,'group')
» bar(y,'stack')
» barh(y,'group')
» barh(y,'stack')
Функция stem (дискретный график):
stem(y), stem(x,y) – элементы выводятся в виде вертикальных линий с маркером на конце (по умолчанию – кружок);
stem(…,<маркер>,S) – изменение типа маркера; S – строковый параметр (см. выше);
stem(…,’fill’) – закрашивание маркера (цвет назначается обычным способом).
» x=pi*[-2:0.05:2]; y=sin(x);
» stem(y), grid
» stem(x,y), grid
» stem(x,y,'fill'), grid
» stem(x,y,'*r'), grid
Функция polar (диаграмма в полярных координатах):
polar(phi,rho,S) – зависимость радиуса-вектора (rho) от полярного угла (phi).
Построим график затухающей синусоиды сначала в прямоугольных, а затем в полярных координатах:
» phi=pi*[0:0.02:6]; rho=exp(-0.2*phi).*sin(3*phi); plot(phi,rho), grid, pause,
polar(phi,rho)
Здесь использован оператор pause (после вывода первого графика необходимо нажать клавишу Enter).
Функция comet («кометообразный» график). Система MATLAB дает возможность проследить процесс построения графика во времени, для чего используют функцию comet(<x>,y,<p>), которая отображает движение рисующей точки по траектории заданного графика; необязательный параметр р задает длину своеобразного «хвоста» графика (по умолчанию р = 0,10). Используем функцию, заданную в примере, приведенном выше:
» comet(phi,rho)
» comet(phi,rho,0.5)
Заметим, чем меньше шаг независимой переменной, тем медленнее (и нагляднее) происходит процесс построения графика. Введем новый шаг – 0,01 и сравним ход построения графика.
Весьма эффектно выглядит построение «кометообразного» пространственного графика, запускаемого с помощью демонстрационной программы lorenz.
Функция pie – («пирог») (круговая секторная диаграмма). Команда pie(y,v) отображает каждый элемент вектора в виде нормированного сектора диаграммы . В этой команде v – логический вектор, отделяющий () или не отделяющий () секторы, которым соответствуют ненулевые элементы.
Пример:
» y=5*rand(1,5);
» pie(y)
» v=[0 1 0 0 0]; pie(y,v)
При повторении команды генерируются разные диаграммы.
Если , то отображаются фактические значения элементов, и диаграмма получается незамкнутой. Это наглядно видно из следующего примера (выводятся как числовые значения элементов, так и соответствующие круговые диаграммы):
» for k=1:10, y=0.5*rand(1,4); pie(y), pause, end
Здесь использован цикл, тело которого заключено между служебными словами for и end; параметр цикла k задает число повторений вычислительной процедуры 2.
4.1.4. Дополнительные графические возможности
Для изменения масштаба по осям координат используют следующие функции: loglog(x,y) – логарифмический по обеим осям; semilogx(x,y) – полулогарифмический (логарифмический по оси абсцисс и линейный – по оси ординат); semilogy(x,y) – логарифмический по оси ординат. Пример:
» x=pi*[0:0.05:6]; y=exp(-0.3*x).*abs(sin(x));
» plot(x,y), grid
» semilogx(x,y), grid
» semilogy(x,y), grid
» loglog(x,y), grid
Для изменения диапазонов значений x, y применяют функцию axis([xmin xmax ymin ymax]).
Продолжим предыдущий пример:
» plot(x,y), axis([0 2*pi 0 max(y)]), grid
» bar(x,y,0.1), axis([0 2*pi 0 max(y)]), grid
» bar(x,y,0.1), axis([0 2*pi 0 2*max(y)]), grid
Команда zoom on (отмена – zoom off) позволяет увеличивать отдельные участки графика с помощью мыши. Для этого участок выделяют прямоугольной рамкой при нажатой левой клавише мыши, а при отжатой участок отображается в графическом окне при соответствующих масштабах по осям. Однократный щелчок левой клавиши увеличивает масштаб всего графика, правой (или левой – при нажатой клавише Shift) – уменьшает его. Масштаб увеличения можно задать и более конкретно с помощью команды zoom(factor), например zoom(1.5). Возврат к исходному масштабу – двойным щелчком левой клавиши мыши или вводом команды zoom(1).
Упражнение. Построить график функции и провести масштабирование с помощью различных способов.
Многооконный режим вывода графических объектов на экран организуется с помощи процедуры subplot(m,n,p) (subplot(mnp), subplot mnp), которая разбивает графическое окно на подокон, где m – число подокон по вертикали (число строк), n – число подокон по горизонтали (число столбцов); p – номер текущего подокна. Для той же исходной зависимости можно организовать вывод графиков в четыре окна с соответствующими поясняющими надписями по осям:
» subplot(221), plot(x,y), grid, xlabel('x'), ylabel('y')
» subplot(222), semilogx(x,y), grid, xlabel('logx'), ylabel('y')
» subplot(223), semilogy(x,y), grid, xlabel('x'), ylabel('logy')
» subplot(224), loglog(x,y), grid, xlabel('logx'), ylabel('logy')
Пример использования цикла:
» for k=1:4, y=rand*rand(1,6); subplot(2,2,k), pie(y), end
При повторном выполнении команды можно видеть, какую форму приобретает круговая диаграмма в зависимости от числовых значений элементов.
Упражнение. Вывести в несколько окон графики одной и той же функции в различном представлении (plot, bar, stem, polar) и варьировании масштабов по осям координат.
Команда gtext(‘text’) создает перекрестие, перемещаемое с помощью мыши. Если перекрестие расположено в нужной точке, щелчком левой клавиши вставляют заданный текст в это место (в том числе и на «поля» графического окна).
Построим семейство экспонент и пометим первую (k = 1) и последнюю (k = 6) из них, а также вставим название:
» x=0:0.1:6; for k=1:6, y=1-exp(-k*x); plot(x,y), hold on, end, grid
» gtext('k=1'), gtext('k=6'), gtext(‘Экспоненты: y=1-exp(-kx)’), hold off
Команда legend используется для расшифровки обозначений на графиках: отображаются типы линий (в соответствии с последовательностью построения) и маркера, а также пояснительный текст. Синтаксис команды:
legend(<text1>,<text2>,…,<pos>),
где <text…> – пояснения к отдельным графикам; pos – параметр, задающий местоположение легенды в соответствии с табл. 4.1.
Таблица 4.1
Значение pos |
Положение легенды |
-1 |
Вне графика справа |
0 |
«Наилучшее» (легенда перекрывает наименьшее число точек графиков) |
1, 2, 3, 4 |
В соответствующих углах графика: в правом верхнем (по умолчанию), в левом верхнем, в нижнем левом и правом |
[x,y] |
По координатам нижнего левого угла легенды |
Положение легенды можно изменять, перемещая ее мышью при нажатой левой клавише. Легенду удаляют с помощью команды legend off.
Пример:
» x=pi*[0:0.05:4];
» y1=sin(x); y2=0.5*cos(x);
» plot(x,y1,x,y2), grid
» legend('y1=sin(x)','y2=0.5cos(x)')
» xlabel('x'), ylabel('y1, y2')
Для управления цветовой палитрой используется команда colormap(C) (или colormap C), где С – матрица-палитра, сформированная из трех чисел, характеризующих интенсивность основных цветов (красного, зеленого и синего).
Ниже приведен перечень имен матрицы.
hsv – насыщенность основных цветов палитры;
hot – палитра черного, красного, желтого, белого цветов;
gray – шкала оттенков серого цвета;
bone – серо-голубая палитра;
copper – линейная палитра с медными оттенками;
pink – пастельные оттенки розовой палитры;
white – палитра белого;
flag – палитра с чередованием красного, белого, синего и черного цветов;
lines – палитра, определяемая свойством ColorOrder;
colorcube – RGB-палитра с оттенками серого;
jet – вариант hsv-палитры;
prism – палитра цветов радуги (разложение белого цвета призмой);
cool – палитра с оттенками голубого и фиолетового цветов;
autumn – палитра с оттенками красного и желтого («осень»);
spring – палитра с оттенками желтого и фиолетового («весна»);
winter – палитра с оттенками голубого и зеленого («зима»);
summer – палитра с оттенками желтого и зеленого («лето»).
Например, команда colormap gray активизирует палитру оттенков серого цвета. По умолчанию используется палитра hsv.