Теоретическое обоснование. Основы программирования и графические возможности системы MATLAB

Основы программирования и графические возможности системы MATLAB

Цель и содержание работы:познакомиться с элементами программирования и возможностями графической визуализации вычислений в пакете MATLAB.

Теоретическое обоснование

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

С позиций программиста язык программирования системы является типичным проблемно-ориентированнымязыком программирования высокого уровня. Точнее говоря, это даже язык сверхвысокогоуровня, содержащий сложные операторы и функции, реализация которых на обычных языках (например, Бейсике, Паскале или Си) потребовала бы много усилий и времени. К таким функциям относятся матричные функции, функции быстрого преобразования Фурье и др., а к операторам — операторы построения разнообразных графиков, генерации матриц определенного вида и т. д.

Программами в системе MATLAB являются М-файлы текстового формата, содержащие запись программ в виде программных кодов. Язык программирования системы MATLAB имеет следующие средства:

- данные различного типа;

- константы и переменные;

- операторы, включая операторы математических выражений;

- встроенные команды и функции;

- функции пользователя;

- управляющие структуры;

- системные операторы и функции;

- средства расширения языка.

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

Язык программирования системы MATLAB вобрал в себя все средства, необходимые для реализации различных видов программирования: процедурного, операторного, функционального, логического, структурного (модульного), объектно-ориентированного, визуально-ориентированного.

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

Зато MATLAB представляет собой яркий пример плодотворности структурногопрограммирования. Подавляющее большинство функций и команд языка представляют собой вполне законченные модули, обмен данными между которыми происходит через их входные параметры, хотя возможен обмен информацией и через глобальные переменные. Программные модули оформлены в виде текстовых М-файлов, которые хранятся на диске и подключаются к программам по мере необходимости. Важно отметить, что в отличие от многих языков программирования, применение тех или иных модулей не требует предварительного объявления, а для создания и отладки самостоятельных модулей MATLAB имеет все необходимые средства. Подавляющее большинство команд и функций системы MATLAB поставляется в виде таких модулей.

Объектно-ориентированноепрограммирование также широко представлено в системе MATLAB. Оно особенно актуально при программировании задач графики. Что качается визуально-ориентированногопрограммирования, то в MATLAB оно представлено в основном в пакете моделирования заданных блоками устройств и систем Simulink.

В MATLAB реализованы возможности по организации циклов и использованию условных операторов.

Условный оператор if в общем виде записывается следующим образом:

if Условие

Инструкции_1

else

Инструкции_2

end

Работа условного оператора аналогично работе условного оператора в языке Visual Basic,

Циклы типа for...end обычно используются для организации вычислений с заданным числом повторений. Конструкция такого цикла имеет следующий вид:

for счетчик=Выражение.

Инструкция_1

.

.

Инструкция_N

end

Выражение чаще всего записывается в виде s:d:e, где s — начальное значение счетчика цикла, d — приращение этой переменной и е — конечное значение управляющей переменной, при достижении которого цикл завершается. Возможна и запись в виде s :е (в этом случае d=l). Список выполняемых в цикле инструкций завершается оператором end.

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

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

Графики MATLAB строит в отдельных окнах Figure, называемых графическими окнами. В главном меню окна появилась позиция Tools (Инструменты), которая позволяет вывести или скрыть инструментальную панель, видимую в верхней части окна графики на рисунке 9.1. Средства этой панели позволяют легко управлять параметрами графиков и наносить на них текстовые комментарии в любом месте.

Теоретическое обоснование. Основы программирования и графические возможности системы MATLAB - student2.ru

Рисунок 9.1 – Пример построения графика синусоиды

Графики в MATLAB можно строить как в командном режиме из Окна команд, так и вызывая их из М-файлов. Для построения двумерных графиков используется команда plot. В общем случае синтаксис команды plot выглядит следующим образом: plot(x, y, ’цвет_стиль_маркер‘),

где x – аргумент функции;

y – значение функции;

цвет и стиль линий графика, также маркер определены в таблице 9.1.

Таблица 9.1 – Цвет, тип линии и тип точки на графике

Цвет Тип маркера Стиль линии
r Красный . Точка - Сплошная
y Желтый о Окружность ; Двойной пунктир
g Зеленый X Крест -. Штрих-пунктир
c Голубой + Плюс -- Штриховая
b Синий * Звездочка  
m Фиолетовый S Квадрат
k Черный D Ромб
w Белый V Треугольник (вниз)
  ^ Треугольник (вверх)
< Треугольник (влево)
> Треугольник (вправо)
p Пятиугольник
H Шестиугольник

Вызов функции plot с многочисленными парами x и y создает многочисленные графики. При этом MATLAB автоматически присваивает каждому графику свой цвет (исключая случаи, когда это делает сам пользователь), что позволяет различать заданные наборы данных. Например

plot(t, f, ‘r-*’, t, y ‘b--+’, t, s, ‘g-.o’) – в этом случае на одной координатной плоскости будут выведены графики трех функций: f(t) – красный с маркером *; y(t) – синий с маркером +; s(t) – зеленый с маркером о. При этом стиль линий также будет различным. Если не указывать параметры ‘цвет_стиль_маркер’, то цвет будет присвоен автоматически, линия будет сплошной, а маркер отсутствовать.

Функции xlabel, ylable, zlable добавляют подписи к соответствующим осям, функция title добавляет заголовок в верхнюю часть окна, а функция text вставляет текст в любое место графика.

Трехмерные поверхности обычно описываются функцией двух переменных z(x, у). Специфика построения трехмерных графиков требует не просто задания ряда значений х и у, то есть векторов х и у. Она требует определения для X и Y двумерных массивов — матриц. Для создания таких массивов служит функция meshgrid. В основном она используется совместно с функциями построения графиков трехмерных поверхностей. Функция meshgrid создает матрицы Х и Y, состоящие из повторяющихся строк и столбцов соответственно. Строки матрицы Х дублируют вектор х, а столбцы Y – вектор y. Синтаксис функции meshgrid: [X,Y] = meshgrid(x,y)

Для построения графиков поверхностей используются функции mesh и surface. MATLAB определяет поверхность как z координаты точек над координатной сеткой плоскости x – y, используя прямые линии для соединения соседних точек. Функции mesh и surface отображают поверхность в трех измерениях. При этом mesh создает каркасную поверхность, где цветные линии соединяют только заданные точки, а функция surface вместе с линиями отображает в цвете и саму поверхность.

Для установки палитры цветов трехмерных графиков служит команда colormap, записываемая в следующей форме

сolormap цвет,

где параметр «цвет» может принимать следующие значения

hsv — цвета радуги;

hot — чередование черного, красного, желтого и белого цветов;

gray — линейная палитра в оттенках серого цвета;

bone — серые цвета с оттенком синего;

copper — линейная палитра с оттенками меди;

pink — розовые цвета с оттенками пастели;

white— палитра белого цвета;

flag — чередование красного, белого, синего и черного цветов;

lines — палитра с чередованием цветов линий;

colorcube — расширенная палитра RGB;

jet — разновидность палитры HSV;

prism — призматическая палитра цветов;

cool — оттенки голубого и фиолетового цветов;

autumn — оттенки красного и желтого цветов;

spring — оттенки желтого и фиолетового цветов;

winter — оттенки синего и зеленого цветов;

summer — оттенки зеленого и желтого цветов.

Уже построенные графики удобно редактировать в графическом окне Figure. Для этого используется панель инструментов, с помощью которой можно менять толщину, цвет, маркер линий. Также на панели инструментов есть «графическая лупа» («+» « – » ), позволяющая увеличивать и уменьшать отдельные части графика.

В одном графическом окне можно одновременно вывести несколько графиков. Для этого графическое окно разбивается на необходимое количество окон командой

subplot(m,n,p) или subplot(m n p)

Эта команда разбивает графическое окно на т х п подокон, при этом m — число подокон по горизонтали, n — число подокон по вертикали, а р— номер подокна, в которое будет выводиться текущий график (подокна отсчитываются последовательно по строкам). Например

» х=-5:0.1:5;

subplot(1.2.1), plot(x.sin(x))

subplot(1.2.2), plot(sin(5*x).cos(2*x+0.2))

При этом графическое окно разобьется на два подокна в первом будет выведен график функции sin(x), во втором – зависимость cos(2x+0,2) от sin(5x).

Задание

1. Создать файл-сценарий с программой для решения следующей задачи. Для восьми различных наборов значений коэффициентов:

а= [-1 2 5 8 10 -4 -11 12], b= [2 -4 12 9 -11 -3 6 10] и с= [4 2 3 -2 -4 7 11 2] найти корни квадратного уравнения Теоретическое обоснование. Основы программирования и графические возможности системы MATLAB - student2.ru . Из найденных корней сформировать два массива X1 и X2.

2. Построить график функции одной переменной y=sin(x). Построить несколько графиков, sin(x) и cos(x). в одной координатной плоскости.

3. Построить графики зависимости массивов Х1 и Х2 от номера набора коэффициентов квадратного уравнения. Отредактировать графики.

4. Построить графики функций двух переменных: Теоретическое обоснование. Основы программирования и графические возможности системы MATLAB - student2.ru , где x и y изменяются от -8 до 8 с шагом 0,5;

Теоретическое обоснование. Основы программирования и графические возможности системы MATLAB - student2.ru Теоретическое обоснование. Основы программирования и графические возможности системы MATLAB - student2.ru , где a и b изменяются от -5 до 5 с шагом 0,15

Наши рекомендации