Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методичка_курсовик_ИНФО_2010

.pdf
Скачиваний:
16
Добавлен:
09.02.2015
Размер:
1.4 Mб
Скачать

строковую константу, с помощью которой можно задать тип и цвет линии графика и маркеров узловых точек. Команда рlot может построить на одном графике сразу несколько линий, каждая из которых представлена парой векторов X и Y и строкой, задающей вид линии. Если указание на цвет линий и точек отсутствует, он будет выбран автоматически из таблицы цветов.

Построим для примера графики синуса, квадрата синуса и синуса в кубе. Интервал зададим от 2 до 2 .

x=-2*pi:0.1*pi:2*pi y1=sin(x); y1=sin(x).^2; y1=sin(x).^3; plot(x,y1,x,y2,x,y3)

Обратите внимание на то, что для вычисления степеней синуса от вектора x используется поэлементное возведение в степень задаваемое знаком ^. Графики функции, отвечающие данным зависимостям, приведены на рис. 1.11.

1

 

 

 

 

 

 

 

 

0.8

 

 

 

 

 

 

 

 

0.6

 

 

 

 

 

 

 

 

0.4

 

 

 

 

 

 

 

 

0.2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

-0.2

 

 

 

 

 

 

 

 

-0.4

 

 

 

 

 

 

 

 

-0.6

 

 

 

 

 

 

 

 

-0.8

 

 

 

 

 

 

 

 

-1

 

 

 

 

 

 

 

 

-8

-6

-4

-2

0

2

4

6

8

Рис. 1.11. Построение нескольких графиков в одном графическом окне

По умолчанию каждый последующий график строится в том же окне, что и предыдущий. При этом первая кривая стирается. Для совмещения совокупности графиков в одном окне, необходимо применять команду hold с параметром on, которая обеспечивает продолжение вывода графиков в текущее окно, так, чтобы последующие графики добавляются к уже существующим. С включенным режимом построения кривых в одном окне, листинг предыдущих команд будет выглядеть следующим образом:

hold on

31

plot(x,y1)

plot(x,y2)

plot(x,y3)

При этом все три кривые одновременно отображаются в одном окне. Команда hold с параметром off отменяет режим продолжения графических построений.

MATLAB позволяет также строить графики в полярной системе координат. Функция polar строит график в полярной системе координат, принимая в качестве первого аргумента вектор угловых координат точек, а в качестве второго – вектор радиусов.

1.1.17. Работа в графическом окне MATLAB

Графики в системе MATLAB отображаются в отдельных масштабируемых и перемещаемых окнах, называемых графическими окнами. Иногда графическое окно бывает скрыто другими окнами - как системы MATLAB, так и другими окнами Windows. Чтобы сделать окно видимым, можно воспользоваться его иконкой на панели задач. Окна графики имеют изображение логотипа системы MATLAB и чаще всего, по умолчанию, имя вида Figure1, Figure2 и так далее. Можно также воспользоваться меню Window в главном окне MATLAB и выбрать необходимое окно с графиком.

Графическое окно имеет свое собственное меню и панель инструментов (рис. 1.12).

а)

б)

в)

Рис. 1.12. Панели инструментов: а) Основная, инструментов графического меню MATLAB; б) 3D-камеры; в) Редактирования графиков.

Опишем назначение основных кнопок и команд меню. Меню File окна графики содержит типовые файловые операции (открыть и закрыть рисунок, сохранить, распечатать и т.д.). Меню Edit кроме типовых операций копирования, вставки и удаления содержит команды редактирования графиков. В меню View можно активизировать или отключить ряд дополнитель-

32

ных панелей инструментов и вспомогательных средств редактирования графика. Выведем на экран все возможные элементы графического окна. В дополнение к основной панели инструментов в окне появились панель инструментов 3 D-камеры (рис. 1.12, б) и панель инструментов для редактирования графика (рис. 1.12, в). Кроме того, в левой части окна появилась палитра средств для добавления различных элементов к графику (Figure Palette) – линий, стрелок, текста и так далее. Здесь же находится список переменных, определенных в текущем сеансе MATLAB (Variables). Воспользовавшись контекстным меню, вызываемым нажатием правой кнопки мыши, можно легко построить нужный тип графика для любой переменной из этого окна. Напомним, что по умолчанию (в режиме hold off) построение нового графика стирает все ранее построенные. Для добавления графика к уже существующим должен быть включен режим hold on. В нижней части окна располагается редактор свойств (Property Editor). В режиме, когда ни один из элементов графика не выделен, в редакторе свойств отображаются его общие свойства – имя, цвет фона и так далее. Если выделить одну из кривых графика, щелкнув на ней мышью, то выделенная линия будет отмечена маркерами в виде черных квадратиков. Теперь редактор свойств будет отображать информацию, относящуюся именно к этой линии.

Отметим некоторые кнопки основной панели инструментов, полезные при просмотре графиков. Во-первых, это кнопки Zoom In и Zoom Out

. При нажатой кнопке Zoom In щелчок левой кнопкой мыши увеличивает

масштаб просмотра графика вдвое, а в режиме Zoom Out – уменьшает вдвое. В режиме Zoom In можно также, зажав левую кнопку мыши, выделить для увеличения нужный фрагмент сложного графика. График должен быть при этом задан достаточно большим количеством точек.

Кнопка Data Cursor необходима для отображения координат точек

на кривой. При нажатии на нее вид указателя мыши должен измениться со стрелки на перекрестье. Если теперь щелкнуть указателем достаточно близко от кривой, на экране появится окошко с точными координатами ближайшей точки кривой. Это достаточно удобный и наглядный способ снятия с графика информации в численном виде

Построение трехмерных графиков 1.1.18. Редактирование графиков

Строить графики в системе MATLAB можно достаточно быстро. При этом многие свойства графиков устанавливаются по умолчанию, например, вид и положение координатных осей, цвет линии графика, ее толщина и так

33

далее. Данные свойства можно менять в широких пределах с помощью параметров команд графики. Однако средства визуального редактирования в графическом окне MATLAB позволяют делать это легче и нагляднее и позволяют быстро привести построенный график к нужному виду.

Для переключения в режим редактирования нужно щелкнуть на кнопке Edit Plot (Редактировать График) основной панели инструментов. В

режиме редактирования графиком можно управлять, например, с помощью контекстного меню, вызываемого щелчком правой кнопки мыши. Это меню для редактирования свойств всего графика. Если выделить щелчком один из объектов графика: линию, ось, легенду, – то вид контекстного меню изменится в соответствии с набором свойств выделенного объекта. Редактирование графика с помощью контекстного меню достаточно очевидно, а возможности редактирования обширны. Можно задать линейный или логарифмический масштаб осей, показать сетку, изменить стиль и размеры осей и цвета фона, добавить к графику легенду (текст, поясняющий график). С помощью меню Insert можно нанести на график дополнительные объекты: надписи в рамке или без, заголовок, подписи к осям, линии и стрелочки и так далее. Полученный таким образом объект можно выделить и перетащить мышкой в любое другое место. Сохранить отредактированный графический файл можно либо в формате графики MATLAB (файл с расширением fig), либо в растровом файле одного из известных форматов. Для возможного последующего редактирования график следует использовать первый вариант сохранения файла командами Save (Сохранить) или

Save As (Сохранить Как) меню File.

1.1.19. Построение трехмерных поверхностей

Построение графиков трехмерных поверхностей реализуется с помощью различных команд, общим этапом для которых является подготовка сетки построения. Трехмерные поверхности обычно описываются функцией двух переменных z(x, у). В силу специфики построения трехмерных графиков недостаточно задать векторы х и у. Требуется определить матрицы с X- и Y- координатами точек сетки. Для создания таких массивов служит функция meshgrid, которая преобразует вектора х и у в массивы X и Y, причем строки выходного массива X являются копиями вектора х, а столбцы массива Y – копиями вектора у. Для создания графика требуется достаточное количество точек, поэтому следует задавать минимальный шаг приращения в команде meshgrid. В приведенном ниже примере указан большой шаг, чтобы в диапазоне X и Y не занимать место однотипными данными.

34

>> [X,Y]=meshgrid (0:1:5,0:1:5) X =

0 1 2 3 4 5

0 1 2 3 4 5

0 1 2 3 4 5

0 1 2 3 4 5

0 1 2 3 4 5

0 1 2 3 4 5 Y =

0 0 0 0 0 0

1 1 1 1 1 1

2 2 2 2 2 2

3 3 3 3 3 3

4 4 4 4 4 4

5 5 5 5 5 5

По сформированной сетке команда mesh с массивами X, Y, Z и C в качестве аргументов выводит в графическое окно сетчатую поверхность Z(X,Y) с цветами узлов поверхности, заданными массивом С. Если последний параметр опущен, будет использована функциональная окраска, при которой цвет точки поверхности задается еѐ высотой.

>>[X,Y]=meshgrid (0:0.1:5,0:0.1:5);

>>Z=sin(X)+sin(Y);

>>mesh(X,Y,Z)

Символ «;» в конце команды блокирует вывод результата в командное окно. Трехмерный график функции Z=sin(X)+sin(Y) изображен на рис. 1.13.

2

1

0

-1

-2 6

4

5

4

 

2

3

2

 

0

1

0

Рис. 1.13. Результат выполнения команды mesh

35

Вграфическом окне можно поворачивать построенную фигуру мышью

инаблюдать ее под разными углами. Для вращения графика достаточно

нажать в основной панели инструментов кнопку Rotate 3D . Теперь, поместив курсор мыши в область графика и нажав левую кнопку мыши, можно круговыми движениями заставить график вращаться.

Иногда график поверхности полезно объединить с контурным графиком ее проекции на плоскость (рис. 1.14).

2

1

0

-1

-2 6

4

5

4

 

2

3

2

 

0

1

0

Рис. 1.14. Результат выполнения команды meshc

Для этого используется команда meshc. Еще один тип представления поверхности, когда она строится из многочисленных столбцов, дают команды класса meshz, строящие поверхность в виде столбиков. Графики такого типа дают хорошее объемное представление о поверхностях. Особенно наглядное представление о поверхностях дают сетчатые графики, использующие функциональную закраску ячеек. Для построения таких поверхностей используются команды класса surf . Результат применения к графику команду интерполяции окраски surf приведен на рис. 1.15, а.

2

 

 

 

2

 

 

1

 

 

 

1

 

 

0

 

 

 

0

 

 

-1

 

 

 

-1

 

 

-2

 

 

 

-2

 

 

6

 

 

 

6

 

 

 

4

 

5

4

 

5

 

 

4

 

4

 

 

 

 

 

а)

2

 

3

2

 

3

 

2

 

2

 

 

 

 

 

 

0

1

0 0

1

б)

 

 

0

 

 

 

 

 

 

Рис. 1.15. а) применение команды surf для построения поверхности и б) интерполяция расцветки поверхности.

36

Обычно применение интерполяции для окраски придает поверхностям и фигурам более реалистичный вид, но фигуры каркасного вида представляют более точные количественные данные о каждой точке. Можно также использовать команду shading с ключом interp, которая проводит интерполяцию расцветки поверхности графика (рис. 1.15, б).

Наиболее реалистичный вид имеют графики поверхностей, в которых имитируется освещение от точечного источника света, расположенного в заданном месте координатной системы. Графики имитируют оптические эффекты рассеивания, отражения и зеркального отражения света. Для получения таких графиков используется команда surfl. Положение и свойства источника света задаются различными параметрами этой команды, если такие аргументы отсутствуют, по умолчанию задаются углы азимута и возвышения в 45° (рис. 1.16).

Рис. 1.16. Построение поверхности командой surfl

Для большей реалистичности целесообразно применять команду интерполяции. Иногда целесообрадно строить графики трехмерных поверхностей, составленные из тонких пластинок - слоев. Такие поверхности строит функция water-fall (водопад). Для работы с трехмерной графикой в графическом окне MATLAB есть специальная панель инструментов – Camera Toolbar (см. рис. 1.12, в). Рисунки на кнопках панели инструментов 3Dграфики поясняют их действия: перемещение и вращение камеры и поверхности, включение отображения перспективы, изменение цветовой схемы и другие. На экране при этом отображается вид на предмет через объектив виртуальной фотокамеры. Приемы форматирования двумерной графики применимы и для трехмерной. MATLAB имеет галерею профессионально выполненных графических программ, демонстрирующих возможности трехмерной графики и построения пользовательского интерфейса.

37

Прочие средства MATLAB

1.1.20. Численные методы и анализ данных

В MATLAB есть библиотека разнообразных численных методов для решения стандартных и специальных задач математики. Поскольку MATLAB изначально ориентирована на операции с матрицами, а большинство численных методов базируется как раз на матричных операциях, очевидно, что реализация вычислительных методов математики представляет собой одну из основных областей применения системы. Решение систем линейных уравнений относится к самой массовой области применения матричных методов. Для решения небольших систем применяются стандартные матричные операции MATLAB, такие, как матричное умножение (C=A*B), вычисление определителя матрицы (det(A)), вычисление обратной матрицы (inv(A)), правое деление матриц (X=B/A). Последнее выражение фактически и дает решение уравнения АХ=В.

A=[1 2;3 5] A =

1 2

3 5

>> B=[2 0;0 2] B =

2 0

0 2 X=B/A X = -10 4 6 -2

Для решения более сложных систем линейных уравнений или систем с особенностями (например, с разреженными матрицами), MATLAB имеет дополнительные специализированные функции, например, функции решения систем с ограничениями методом наименьших квадратов. Для поиска минимума функции f(x) в некотором ее интервале используется функция fminbnd.

>> fminbnd(cos,-pi,pi)/pi ans =

-1.0000

В список численных методов MATLAB входят также функции для численного дифференцирования и интегрирования, функции, осуществляющие умножение и деление полиномов, различные методы решения дифферен-

38

циальных уравнений, поиск корней нелинейных уравнений и т. д. Еще один обширный набор математических методов, реализованных в MATLAB, относится к анализу данных. Самый простой анализ данных, содержащихся в некотором массиве, заключается в поиске его элементов с максимальным и минимальным значениями. В MATLAB определены функции для быстрого нахождения минимальных и максимальных элементов массива. Функция max(A) возвращает наибольший элемент, если А – вектор или векторстроку, содержащую максимальные элементы каждого столбца, если А – матрица.

Многие операции статистической обработки данных выполняются быстрее и надежнее, если данные предварительно отсортированы. Представление данных в отсортированном виде более наглядно. Ряд функций MATLAB служит для выполнения сортировки элементов массива. Функция sort(A) в случае одномерного массива А сортирует и возвращает элементы по возрастанию их значений; в случае двумерного массива происходит сортировка и возврат элементов каждого столбца.

Более сложные методы, имеющиеся в MATLAB для анализа данных, включают вычисление коэффициентов корреляции, реализацию преобразования Фурье, фильтрацию, аппроксимацию и интерполяцию данных и т. д.

1.1.21. Элементы программирования в MATLAB

При решении серьезных задач возникает необходимость сохранения используемых последовательностей вычислений, а также их дальнейшей модификации. Таким образом, существует необходимость программирования решения задач. Программирование является эффективным средством расширения MATLAB и адаптации еѐ к решению специфических проблем. Оно реализуется с помощью языка программирования системы. Большинство объектов этого языка, в частности все команды, операторы и функции, одновременно являются объектами входного языка MATLAB в командном режиме работы. Программы на языке программирования MATLAB сохраняются в виде текстовых m-файлов. Подготовленный и записанный на диск m- файл становится частью системы, и его можно вызывать как из командной строки, так и из другого m-файла. Для подготовки, редактирования и отладки m-файлов служит специальный многооконный редактор. Редактор можно вызвать командой edit из командной строки или командой New - M-file из меню File. В окне редактора можно редактировать файл, пользоваться средствами отладки и запуска. Перед запуском файла его необходимо записать на диск, используя команду Save as в меню Filе. После записи файла на диск станет активной команда Run в меню Tools (Инструменты). Эта команда запускает на исполнение m-файл. Редактор также выполняет син-

39

таксическую проверку файла, используя для наглядности цветовые выделения различных конструкций языка, позволяет устанавливать в тексте файла точки прерывания, нумерует строки файла и так далее. Редактор является многооконным. Окно каждой программы оформляется как вкладка.

Существует два типа m-файлов: файлы-сценарии и файлы-функции.

Файл-сценарий (Script-файл), является просто записью серии команд без входных и выходных параметров. Для запуска файласценария из командной строки MATLAB достаточно указать его имя в этой строке. В таких файлах удобно сохранять последовательность вычислений для повторного использования. Файл-функция отличается от файла-сценария прежде всего тем, что созданная им функция имеет входные параметры, список которых указывается в круглых скобках, и возвращает одно или несколько значений.

Язык программирования MATLAB является проблемно-ориентирован- ным языком высокого уровня и интерпретатором, то есть каждая инструкция программы распознается и тут же исполняется. Этап компиляции полной программы отсутствует. Высокая скорость выполнения программ обеспечена наличием откомпилированного ядра, хранящего в себе критичные к скорости выполнения инструкции, такие, например, как базовые математические функции. Для выполнения программ необходима среда MATLAB. Однако для программ на языке MATLAB созданы компиляторы, транслирующие их в коды языков программирования С и C++.

40