152
Поволжский Государственный Университет Телекоммуникаций и Информатики Факультет ИСТ Кафедра ИВТ Конспект лекций "Система компьютерной математики MATLAB" Автор-составитель: Акчурин Э.А. д.т.н., профессор Рецензент Тарасов В.Н. д.т.н., профессор Самара 2012

Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

  • Upload
    vunga

  • View
    310

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Поволжский Государственный Университет

Телекоммуникаций и Информатики

Факультет ИСТ

Кафедра ИВТ

Конспект лекций

"Система компьютерной математики MATLAB"

Автор-составитель: Акчурин Э.А. д.т.н., профессор Рецензент Тарасов В.Н. д.т.н., профессор

Самара

2012

Page 2: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Факультет информационных систем и технологий

Кафедра «Информатика и вычислительная техника»

Автор - д.т.н., профессор Акчурин Э.А.

Другие материалы по дисциплине Вы найдете на сайте

www.ivt.psati.ru

Page 3: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Оглавление

Оглавление .............................................................................................................. 3 1. Математическое программирование.................................................................. 7

1.1. Литература .................................................................................................... 7 1.2. Обзор ............................................................................................................. 7 1.3. Mathcad.......................................................................................................... 7 1.4. Macsyma ........................................................................................................ 8 1.5. Maple.............................................................................................................. 9 1.6. Mathematica ................................................................................................. 10 1.7. S-PLUS ........................................................................................................ 11 1.8. MATLAB ....................................................................................................... 11 1.9. Scilab............................................................................................................ 13 1.10. Octave ........................................................................................................ 14

2. MATLAB .............................................................................................................. 15 2.1. Состав системы .......................................................................................... 15 2.2. MATLAB продукты ...................................................................................... 15 2.3. Инструментальные наборы Toolboxes ..................................................... 16 2.4. Simulink продукты ....................................................................................... 17 2.5. Множества блоков Blocksets...................................................................... 17 2.6. Модели связи с симуляторами .................................................................. 18 2.7. Свойства системы ...................................................................................... 19

Возможности системы........................................................................................ 19 2.8. Функции MATLAB ........................................................................................ 20

3. Инструментарий рабочего стола ...................................................................... 23 3.1. Начало и завершение сессии .................................................................... 23 3.2. Справка по использованию MATLAB ........................................................ 25

3.2.1. Информационная среда системы MATLAB ...................................... 25 3.2.2. Окна MATLAB ...................................................................................... 26 3.2.3. Profilier (профилировщик) ................................................................... 27 3.2.4. Figure (Графическое окно) .................................................................. 29 3.2.5. Simulink Library Browser ...................................................................... 31 3.2.6. Графический пользовательский интерфейс ..................................... 32

4. Импорт и экспорт данных .................................................................................. 35 5. Математика ........................................................................................................ 37

5.1. Массивы и матрицы ................................................................................... 38 5.1.1. Основная информация ....................................................................... 38 5.1.2. Элементарные матрицы и массивы .................................................. 39 5.1.3. Операции с массивами ....................................................................... 40 5.1.4. Манипуляции с массивами ................................................................. 41 5.1.5. Специализированные матрицы ......................................................... 42

Page 4: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

5.2. Линейная алгебра....................................................................................... 42 5.2.1. Матричный анализ .............................................................................. 42 5.2.2. Линейные уравнения .......................................................................... 43 5.2.3. Собственные и особые значения ...................................................... 43 5.2.4. Матричные логарифмы и экспоненты ............................................... 43 5.2.5. Факторизация ...................................................................................... 44

5.3. Элементарная математика ........................................................................ 44 5.3.1. Тригонометрия .................................................................................... 45 5.3.2. Экспоненты (степени, корни, логарифмы) ........................................ 45 5.3.3. Комплексные числа ............................................................................ 46 5.3.4. Округления и остатки .......................................................................... 46 5.3.5. Дискретная математика ...................................................................... 47

5.4. Полиномы ................................................................................................... 47 5.5. Интерполяция и вычислительная геометрия ........................................... 47 5.6. Преобразования систем координат .......................................................... 48 5.7. Нелинейные численные методы ............................................................... 48

5.7.1. Обыкновенные дифуравнения........................................................... 48 5.7.2. Дифуравнения с задержками ............................................................. 49

5.8. Специализированная математика ............................................................ 49 5.9. Разреженные матрицы .............................................................................. 50 5.10. Математические константы ..................................................................... 50

6. Анализ данных ................................................................................................... 52 Определены категории.......................................................................................... 52 7. Программирование и типы данных .................................................................. 53 Определены категории.......................................................................................... 53

7.1. Ключевые слова ......................................................................................... 53 7.2. Типы данных ............................................................................................... 54

Определены категории.......................................................................................... 55 7.2.1. Численные типы .................................................................................. 55 7.2.2. Символы и строки ............................................................................... 57 7.2.3. Структуры ............................................................................................ 59 7.2.4. Массивы ячеек .................................................................................... 60 7.2.5. Дескрипторы функций ........................................................................ 61

7.3. Преобразования типов данных ................................................................. 62 Определены категории.......................................................................................... 63

7.4. Строки ......................................................................................................... 63 Определены категории.......................................................................................... 64

7.5. Побитовые операции ................................................................................. 64 7.6. Логические операции ................................................................................. 65 7.7. Операции сравнения .................................................................................. 66 7.8. Операции установки ................................................................................... 67 7.9. Операции дата-время ................................................................................ 68

Page 5: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

7.10. Программирование в MATLAB ................................................................ 69 Определены категории.......................................................................................... 69

7.10.1. Функции и сценарии .......................................................................... 69 7.10.2. Вычисления ....................................................................................... 70

MATLAB – суперкалькулятор............................................................................. 71 7.10.3. Переменные и функции в памяти .................................................... 72 7.10.4. Поток управления ............................................................................. 72 7.10.5. Редактор/Отладчик (Editor/Debugger) ............................................. 74

Пункт Desktop (Рабочий стол) ........................................................................... 83 7.10.6. Программирование MEX .................................................................. 85

8. ООП .................................................................................................................... 86 9. Графика .............................................................................................................. 88

9.1. Функции графики ........................................................................................ 88 9.2. Анатомия графики ...................................................................................... 88

9.2.1. Пункт File (Файл) ................................................................................. 89 9.2.2. Пункт Edit (Правка) .............................................................................. 90 9.2.3. Пункт View (Вид) .................................................................................. 91 9.2.4. Пункт Insert (Вставить) ........................................................................ 92 9.2.5. Пункт Tools (Инструменты) ................................................................ 93 9.2.6. Пункт Desktop (Рабочий стол) ............................................................ 95 9.2.7. Пункт Window (Окно) ........................................................................... 95 9.2.8. Пункт Help (Справка) .......................................................................... 96

9.3. Инструменты рисования ............................................................................ 96 9.3.1. Свойства графических объектов ....................................................... 97 9.3.2. Объект Figure (Графическое окно) .................................................... 98 9.3.3. Объект Axes (Координатные оси) ...................................................... 98 9.3.4. Объект Text (Текст) ............................................................................. 99 9.3.5. Объект LineSeries (Набор линий) .................................................... 100

Спецификаторы цвета ..................................................................................... 100 9.4. Функции рисования высокого уровня ...................................................... 101 9.5. Графика 2D ............................................................................................... 102

9.5.1. Перечень функций ............................................................................ 102 9.5.2. Функция plot (график) ........................................................................ 102 9.5.3. Функция plotyy (график, две оси у) .................................................. 105 9.5.4. Функции, логарифмический масштаб .............................................. 105 9.5.5. Функции bar и barh (столбцовые диаграммы) ................................. 107 9.5.6. Функция hist (гистограмма) ............................................................... 108 9.5.7. Функция stairs (ступеньки) ................................................................ 108 9.5.8. Функция errorbar (с зонами погрешности) ....................................... 109 9.5.9. Функция stem (дискретные отсчеты) ............................................... 110 9.5.10. Функция polar (полярные координаты) .......................................... 111 9.5.11. Функция rose (угловые гистограммы) ............................................ 112

Page 6: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

9.5.12. Функция compass (комплексные векторы) .................................... 113 9.5.13. Функция feather (комплексные векторы) ....................................... 114 9.5.14. Функция contour (контур) ................................................................ 115 9.5.15. Функция quiver (поля градиентов) .................................................. 116 9.5.16. Функции закрашивания ................................................................... 117 9.5.17. Функция pie (круговая диаграмма) ................................................. 118

9.6. Графика 3D ............................................................................................... 119 9.6.1. Перечень функций ............................................................................ 119 9.6.2. Функция plot3 (график 3D) ................................................................ 120 9.6.3. Функции mesh (сетка с окраской линий) .......................................... 120 9.6.4. Функции surf (сетка с окраской поверхности) ................................. 121 9.6.5. Функция waterfall (слоеная поверхность) ........................................ 123 9.6.6. Функция pcolor (на плоскости в цветах) .......................................... 124 9.6.7. Функция contour3 (3D контур) ........................................................... 125 9.6.8. Функции fill3, patch (многоугольник) ................................................. 126 9.6.9. Функция pie3 (объемная круговая) .................................................. 127

9.7. Функции трех переменных ....................................................................... 128 9.7.1. Функция slice (сечение поверхности) .............................................. 128 9.7.2. Функция cylinder (цилиндр) ............................................................... 129 9.7.3. Функция sphere (сфера) .................................................................... 130 9.7.4. Функции trimesh, trisurf (треугольные грани) ................................... 131

9.8. Оформление графики, детали ................................................................ 132 9.8.1. Метки осей, заголовок окна, текст ................................................... 132 9.8.2. Легенда .............................................................................................. 132 9.8.3. Маркировка линий равного уровня .................................................. 133 9.8.4. Палитра и шкала цветов .................................................................. 134 9.8.5. Функции shading (окраска поверхностей) ........................................ 135

10. Создание графического ПИ .......................................................................... 137 10.1. Визуальное программирование GUIDE ................................................ 137 10.2. Открытие окна инструмента GUIDE ...................................................... 138

11. Внешние интерфейсы ................................................................................... 150 Это сообщение ..................................................................................................... 150 3.1416 .................................................................................................................... 150 123 ......................................................................................................................... 150 Пример 1. Ввод числа в виде строки ................................................................. 151 25 ........................................................................................................................... 152 100 106 ................................................................................................................ 152

Page 7: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

1. Математическое программирование

1.1. Литература

1. Дьяконов В. MATLAB 7.*/R2006/R2007: Самоучитель. – М.: ДМК Пресс, 2008. – 768 с.

2. Hunt. MATLAB R2007 с нуля! - М.: Лучшие книги, 2008, 352 с. 3. Дьяконов В. Simulink 5/6/7: Самоучитель. – М.: ДМК Пресс, 2008. – 784 с.:

1.2. Обзор

При программировании интерес представляет конечный результат, рутинные детали мало значительны. Предметного пользователя интересует не техника программирования, а конечный результат.

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

Желательно автоматизировать формирование таблиц. Это рутинная операция, которая при обычном программировании требует много времени и усилий.

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

Для визуализации результата желательны графики в разных форматах (декартовы, полярные, объемные, контурные и др.).

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

Хорошо иметь средства для моделирования процессов.

Подобными свойствами обладают системы компьютерной математики (СКМ):

1.3. Mathcad

Создана в 1980-х годах в университете Стэнфорда (США). Современные версии для ПК готовит фирма MathSoft Application. (теперь PTC). Web страница в Интернете – www.ptc.com.

Это интегрированная среда для выполнения, документирования и обмена результатами технических вычислений Данный продукт позволяет пользователям вводить, редактировать и решать уравнения, визуализировать результаты, документировать их, а также обмениваться результатами анализа, отслеживая при этом их размерность. Mathсad служит средством

Page 8: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

вычислений, анализа и написания отчетов для профессионалов во всех областях науки и техники. Продукт прост в использовании и не вызывает проблем при обучении.

Цена лицензии 1435 $, за обновление версии 325 $.

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

MathCAD = Mathematics Computer Assistance Design (Математическое конструирование с помощью компьютеров).

Достоинства:

Математический интерфейс. Программирование на языке математики. Для непрограммиста лучше формулы в привычном математическом начертании.

Есть мощная поддержка двумерной и трехмерной графики.

Возможен импорт графики из других программ.

Большое количество встроенных математических функций (сотни). Практически все основные математические формулы.

Встроенные справочники по предметным областям.

Возможна анимация.

Символьная математика. Основные аналитические преобразования (компьютерная алгебра).

Есть версии, в которых интерфейс на русском языке.

Недостатки:

Это интерпретатор.

Возможности программирования ограничены. Они заложены в технику написания подпрограмм.

Нет встроенной системы имитационного моделирования (как Simulink в MATLAB).

1.4. Macsyma

Macsyma — система компьютерной алгебры, первая версия которой была разработана с 1968 по 1982 год в MIT в лаборатории Project MAC, а впоследствии распространялась на коммерческой основе. Это была первая всеобъемлющая система символьной математики и одна из ранних систем, основанных на знаниях. Многие из идей, появившихся в Macsyma,

Page 9: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

впоследствии были заимствованы такими системами как Mathematica, Maple, и другими.

Проект был инициирован в июле 1968 года Карлом Энгельманом (англ. Carl Engelman), Вильямом Мартином (англ. William A. Martin) (интерфейс пользователя, отображение выражений, арифметика полиномов) и Джоэлем Мозесом (англ. Joel Moses) (механизм упрощения выражений, неопределённые интегралы: эвристики/алгоритм Риша)

Macsyma от компании Macsyma, Inc. (http://www.macsyma.com/) — это одна из первых математических программ, оперирующих символьной математикой. Сильные стороны Macsyma — развитой аппарат линейной алгебры и дифференциальных уравнений.

Система ориентирована на прикладные расчеты и не предназначена для теоретических исследований в области математики. В связи с этим в программе отсутствуют или сокращены разделы, связанные с теоретическими методами (теория чисел, теория групп, и др.). Пожалуй, главным преимуществом Macsyma перед другими универсальными математическими пакетами является то, что пользователь может аналитически и численно решать большое количество различных типов уравнений в частных производных.

Macsyma имеет очень удобный интерфейс. Рабочим документом программы является научная тетрадь, в которой содержатся доступные для редактирования поля текста, команд, формул и графиков. Отличительной особенностью пакета является совместимость с текстовым редактором Microsoft Word. Почти все команды Macsyma в библиотечных файлах загружаются автоматически; очень удобно и окно просмотра (браузер) математических функций. Macsyma генерирует коды FORTRANа и C, включая управляющие операторы. Система работает на платформе Intel под управлением OS Windows.

Недостаток - нет встроенной системы имитационного моделирования (как Simulink в MATLAB).

Цена — 500 $.

1.5. Maple

СКМ Maple создана в 80-х годах в университете Waterloo (Канада) сначала для больших компьютеров. Современные версии для ПК готовит фирма Waterloo Maple.

Данный продукт(часто называют системой символьных вычислений или системой компьютерной алгебры. Maple позволяет выполнять как численные,

Page 10: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

так и аналитические расчеты с возможностью редактирования текста и формул на рабочем листе. Благодаря представлению формул в полиграфическом формате, великолепной двух- и трехмерной графике и анимации Maple является одновременно и мощным научным графическим редактором. Простой и эффективный язык-интерпретатор, открытая архитектура, возможность преобразования кодов Maple в коды C делает его очень эффективным средством создания новых алгоритмов. Обладающий интуитивно понятным интерфейсом, простыми правилами работы и широким функционалом, этот продукт уже завоевал популярность у российских математиков и инженеров. Цена Maple для ВУЗов — 124 $.

Эта СКМ ориентирована на профессиональных математиков, позволяет выполнять математические расчеты любой сложности. Однако ее основное ядро эффективно могут использовать все.

Достоинства:

Математический интерфейс. Программирование на языке математики. Для непрограммиста лучше формулы в привычном математическом начертании.

Есть мощная поддержка двумерной и трехмерной графики.

Огромное количество встроенных математических функций (2700). Практически все известные математические формулы.

Символьная математика. Основные аналитические преобразования (компьютерная алгебра).

Недостатки:

Это интерпретатор.

Возможности программирования ограничены.

Поддержка в основном символьной математики.

Нет встроенной системы имитационного моделирования (как Simulink в MATLAB).

1.6. Mathematica

СКМ Mathematica - конкурент системы Maple. Их возможности близки друг к другу. Современные версии готовит фирма Wolfram Research Incorporated.Название по фамилии главы фирмы, лондонского вундеркинда – Wolfram.

Система Mathematica — компании Wolfram Research, Inc. имеет чрезвычайно широкий набор средств, переводящих сложные математические алгоритмы в программы. По сути дела, все алгоритмы, содержащиеся в курсе высшей математики технического вуза, заложены в память компьютерной системы

Page 11: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Mathematica. В некоторых странах (например, в США) система высшего образования тесно связана с этим продуктом. Огромное преимущество системы Mathematica состоит в том, что ее операторы и способы записи алгоритмов просты и естественны. Mathematica имеет мощный графический пакет, с помощью которого можно строить графики очень сложных функций одной и двух переменных. Главное преимущество Mathematica, делающее ее бесспорным лидером среди других систем высокого уровня, состоит в том, что эта система получила сегодня очень широкое распространение во всем мире, охватив огромные области применения в научных и инженерных исследованиях, а также в сфере образования.

Цена для ВУЗов— 770 $. Обновление бесплатное.

1.7. S-PLUS

S-PLUS — продукт компании Insightful Corporation (http://www.insightful.com/), ранее известной как подразделение MathSoft, а теперь являющейся одним из мировых лидеров в области статистического анализа данных, визуализации и прогнозирования. S-PLUS представляет собой интерактивную компьютерную среду, обеспечивающую полнофункциональный графический анализ данных и включающую оригинальный объектно-ориентированный язык. Гибкая система S-PLUS может использоваться для исследовательского анализа данных, статистического анализа и математических вычислений, а также для удобного графического представления анализируемых данных. К основным достоинствам S-PLUS относятся непревзойденная функциональность, возможность интерактивного визуального анализа данных, интуитивно понятные интерфейс пользователя и методы подготовки анализируемых данных, простота использования самых современных статистических методов, мощные вычислительные возможности, расширяемый набор статистических методов, гибкий интерфейс пользователя.

Недостаток - нет встроенной системы имитационного моделирования (как Simulink в MATLAB).

Цена — 2865 долл.

1.8. MATLAB

Первая версия СКМ MATLAB создана в конце 1970-х годов в Стэнфордском университете (США) для преподавания теории матриц. Современные версии готовит фирма Math Works (www.mathworks.com).

Среди основных областей применения MATLAB — математические расчеты, разработка алгоритмов, моделирование, анализ данных и визуализация,

Page 12: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

научная и инженерная графика, разработка приложений, включая графический интерфейс пользователя.

MATLAB решает множество компьютерных задач — от сбора и анализа данных до разработки готовых приложений. Среда MATLAB соединяет в себе математические вычисления, визуализацию и мощный технический язык. Встроенные универсальные интерфейсы позволяют легко работать с внешними информационными источниками, а также осуществлять интеграцию с процедурами, написанными на языках высокого уровня (C, C++, Java и др.).

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

Цена — 500 $ за ядро, 200 $ за каждый пакет расширения. Полный комплект - 500 + 75*200 = 15500 $.

MATLAB = Matrix Laboratory (Лаборатория Матриц).

Достоинства:

Матричная математика обеспечивает очень высокую скорость математических действий. Примерно в 10 раз выше, чем в СКМ Mathcad.

Язык программирования близок к широко распространенным языкам Делфи и Бейсик.

Есть поддержка двумерной и трехмерной графики.

Большое количество встроенных математических функций. Несколько тысяч для различных предметных областей. Есть возможность создания собственных функций в виде М-файлов.

Есть средства разработки графического пользовательского интерфейса.

Есть встроенная система имитационного моделирования блочно организованных систем Simulink.

Недостатки:

Программирование не на языке математики.

Нет достаточной поддержки работы с радиотехническими компонентами.

СКМ содержит четыре группы компонент:

Продукты MATLAB. Это ядро системы и наборы универсальных функций.

Page 13: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Toolboxes – Инструментальные пакеты для MATLAB (универсальные и специализированные). Каждый набор содержит встроенные функции для определенной предметной области.

Продукты Simulink. Это сама система имитационного моделирования блочно организованных систем Simulink и поддерживающие ее средства.

Blocksets – Наборы блоков для имитационной модели Simulink. Каждый набор содержит блоки для определенной предметной области.

1.9. Scilab

Scilab — пакет прикладных математических программ, предоставляющий мощное открытое окружение для инженерных (технических) и научных расчётов. С 1994 года распространяется вместе с исходным кодом через Интернет. В 2003 году для поддержки Scilab был создан консорциум Scilab Consortium. Сейчас в него входят 25 участников, в том числе Mandriva, INRIA и ENPC (Франция).

Scilab = Science Laboratory (Научная Лаборатория).

Scilab имеет схожий с MATLAB язык программирования. Говорят, что Scilab бесплатный клон MATLAB

В состав пакета входит утилита, позволяющая конвертировать документы MATLAB в Scilab. В состав пакета также входит Scicos (Xcos в последних версиях)— система моделирования блочно организованных систем (аналог Simulink в пакете MATLAB).

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

Scilab является типичным командным интерпретатором и структурно состоит из интерпретирующей системы, принимающей команды пользователя и возвращающей результаты, и двух библиотек: собственных функций и дополнительных — на языках С и Fortran.

Хотя Scilab является бесплатным продуктом, его вычислительные возможности, обеспеченные приблизительно 1000 встроенных функций, вполне соответствуют СКМ профессионального уровня. Вряд ли имеет смысл перечислять даже главные из них, поэтому остановимся только на ключевых моментах.

Page 14: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

1.10. Octave

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

Язык Octave оперирует арифметикой вещественных и комплексных скаляров и матриц, имеет расширения для решения линейных алгебраических задач, нахождения корней систем нелинейных алгебраических уравнений, работы с полиномами, решения различных дифференциальных уравнений, интегрирования систем дифференциальных и дифференциально-алгебраических уравнений первого порядка, интегрирования функций на конечных и бесконечных интервалах. Этот список можно легко расширить, используя язык Octave (или используя динамически загружаемые модули, созданные на языках C, С++, Фортран и др.).

Недостаток – нет встроенной системы имитационного моделирования (как Simulink в MATLAB).

Page 15: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

2. MATLAB

Возможности MATLAB для каждой новой версии существенно изменяются и расширяются. В новых версиях:

Используется свой интерфейс.

Изменяется список и содержание пакетов расширения. Это вызвано разработкой новых функций и усовершенствованием существующих.

Из функционально одинаковых функций разных пакетов сохраняются только наилучшие.

Используются демо-программы, связанные только с новейшими технологиями.

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

2.1. Состав системы

Release Notes Обзор серсии

Installaton Порядок установки

MATLAB Ядро MATLAB Содержат наборы универсальных функций.

MATLAB продукты

Дополнительные средства MATLAB Содержат наборы специальных функций.

Toolboxes Инструментальные пакеты - расширения MATLAB. Содержат наборы функций для предметной области.

Simulink Дополнительные средства Simulink. Содержат наборы универсальных блоков, методов и функций.

Simulink продукты

Simulink – система имитационного моделирования. Содержат дополнительные методы и функции.

Blocksets Наборы компонент Simulink - расширения Simulink. Содержат наборы блоков, методов и функций для предметной области.

Документация

2.2. MATLAB продукты

Embedded MATLAB Подмножество языка MATLAB

MATLAB Compiler Компилятор кода MATLAB в приложение операционной системы. Выходные коды – C, C++, Java, .NET, Microsoft.Excel,

Page 16: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

MATLAB Builder EX Расширение компилятора MATLAB для связи с Excel.

MATLAB Builder JA Расширение компилятора MATLAB для связи с Java.

MATLAB Builder NE Расширение компилятора MATLAB для связи с .NET.

MATLAB Distributed Computing Server

Сервер для поддержки параллельных вычислений..

MATLAB Report Generator Генератор отчетов

SimBiology Концептуальный анализ и моделирование.

SystemTest Тестирование.систем.

Spreadsheet Link EX Связь с окружением для работы с ошибками.

2.3. Инструментальные наборы Toolboxes

Aerospace Toolbox Авионика

Bioinformatics Toolbox Биоинформатика

Communications Toolbox Телекоммуникации

Control System Toolbox Системы автоматического управления

Curve Fitting Toolbox Подгонка кривых под данные кривых

Data Acquisition Toolbox Доступ к данным

Database Toolbox Обмен с базами данных

Datafeed Toolbox Доступ к финансовым данным

Econometric Toolbox Экономические и социальные системы

Filter Design Toolbox Проектирование фильтров

Filter Design HDL Coder Расчет фильтров с аппаратными кодами

Financial Toolbox Финансы

Financial Derivatives Toolbox Производные от «Финансы»

Fixed-Income Toolbox Финансы с фиксированным доходом

Fixed-Point Toolbox Фиксированная точка

Fuzzy Logic Toolbox Нечеткая логика

Global Optimization Toolbox Глобальная оптимизация

Image Acquisition Toolbox Доступ к изображениям

Image Processing Toolbox Обработка изображений

Instrument Control Toolbox Управление внешними инструментами

Mapping Toolbox Картография

Model Predictive Control Toolbox. Модели с упреждающим управлением

Model-Based Calibration Toolbox Калибровка, основанная на модели

Neural Networks Toolbox Нейронные сети

OPC Toolbox Серверы данных с OPC

Optimization Toolbox Оптимизация

Page 17: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Parallel Computing Toolbox Параллельные вычисления

Partial Differential Equation Toolbox Уравнения в частных производных

RF Toolbox Радиочастотные методы

Robust Control Toolbox Устойчивые системы управления

Signal Processing Toolbox Обработка сигналов

Statistics Toolbox Статистика

Symbolic Math Toolbox Символьная математика

System Identification Toolbox Создание модели по данным

Vehicle Network Toolbox Автомобили

Wavelet Toolbox Вейвлеты

2.4. Simulink продукты

DO Qualification Kit Шаблоны, тестовые средства.

IEC Certification Kit Инструменты из стандарта IEC 61508 и ISO 26262.

Real-Time Workshop Embedded Coder

Встроенный кодер для мастерской реального времени

Simulink Fixed Point Фиксированная точка в Simulink

Simulink HDL Coder Генератор HDL кода

Simulink PLC Coder Генератор PLC кода

Simulink Report Generator, Генератор отчетов в Simulink

xPC Target Встроенный объект

xPC TargetBox Набор встроенных объектов

2.5. Множества блоков Blocksets

Aerospace Blockset Авионика

Communications Blockset Телекоммуникации

Real-Time Workshop Мастерская реального времени

Real-Time Workshop Embedded Coder

Встроенноый кодер мастерской реального времени

Signal Processing Blockset Обработка сигналов

Gauges Blockset Набор графических блоков для визуализации модели

SimDriveline Сложные модели с визуализацией для Simulink

SimElectronics Электромеханика и электроника

SimEvents События

SimHydraulics Гидравлика

SimMechanics Механика

SimPowerSystems Энергетика

Page 18: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

SimRF Радиочастотные компоненты

Simscape Многоцелевые компоненты

Simulink 3D Animation Трехмерная анимация

Simulink Control Design Проектирование систем управления в Simulink

Simulink Design Optimization Оптимизация проекта

Simulink Design Verifier Формальный анализ

Simulink Verification and Validation

Верификация и проверка в Simulink

Stateflow Моделирование систем, управляемых событиями

Video and Image Processing Blockset

Видео и изображения

2.6. Модели связи с симуляторами

EDA Simulator Link with HDL Simulators Связь с аппаратными симуляторами HDL

EDA Simulator Link with Virtual Platforms

Связь с аппаратными виртуальными платформами

EDA Simulator Link with FPGA Development Environment

Связь с аппаратной средой разработки FPGA

Embedded IDE Link

Связь с встроенными ИСР. Доступны:

Altium TASKING

Analog Devices VisualDSP++

Eclipse IDE

Green Hills MULTI

Texas Instruments Code Composer Studio

Target Support Package

Поддержка аппаратных средств. Доступны:

Analog Devices™ Blackfin

Freescale MPC5xx

Infineon C166

Texas Instruments C2000

Texas Instruments C5000

Texas Instruments C6000

Page 19: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

2.7. Свойства системы

Система устанавливается пользователем в объеме, зависящем от задач, которые предполагается решать. При установке загружаются:

Компоненты системы. Можно использовать только MATLAB.

Инструментальные пакеты расширения по выбору.

Библиотеки компонент по выбору.

Документация по выбору. В форматах HTML (просмотр браузерами Интернета) или PDF(просмотр с помощью Acrobat Reader).

2.8. Возможности системы

В области вычислений:

матричные и логические операции,

элементарные функции,

полиномиальная арифметика,

специальные функции,

многомерные массивы,

структуры и массивы структур,

строки в формате Unicod (2 байта на символ).

В области численных методов:

поиск корней нелинейных уравнений,

оптимизация функций,

многомерная интерполяция,

решение дифференциальных уравнений,

одномерные и двумерные квадратуры.

В области символьной математики:

символьные преобразования выражений,

решение нелинейных уравнений,

решение дифференциальных уравнений.

В области мультимедиа:

двумерные и трехмерные графики,

графика с множественной подсветкой,

дескрипторная графика,

анимация,

24-битный цвет,

16-битный стереозвук,

Page 20: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

создание графического интерфейса GUI,

редактор свойств графических объектов С удобным графическим интерфейсом.

В области программирования:

редактор/отладчик M-файлов, В виде М-файлов (с расширением .m).

создание своих функций,

профилировщик М-файлов, Для оценки времени исполнения фрагментов.

свыше 500 встроенных функций.

применение программ на С и Fortran,

перекодировка MatLab => C++, Для программирования ЦСП.

перекодировка MatLab Р код. Для межплатформенного обмена.

создание HTML файлов,

прямой выход в Интернет, с помощью Интернет-браузеров.

В области моделирования:

Simulink – имитационное моделирование,

Документация:

в формате HTML,

в формате PDF.

2.9. Функции MATLAB

MATLAB содержит десятки тысяч функций. Для их просмотра выполняется команда Help=>Function Browser. В примере в браузере выделен фрагмент ядра.

Page 21: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Определены категории:

Desktop Tools and Development Environment

Инструменты рабочего стола и среды разработки.

Data Import and Export Импорт и экспорт данных.

Mathematics Математические операции и анализ данных.

Data Analysis Анализ данных

Programming and Data Types Программирование и типы данных

Object-Oriented Programming Объектно-ориентированное программирование

Graphics Графика.

3-D Visualization Трехмерная визуализация.

GUI Development Создание графического пользовательского интерфейса.

External Interfaces Внешние интерфейсы.

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

Page 22: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В
Page 23: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

3. Инструментарий рабочего стола

Инструментарий можно увидеть в каталоге:

Определены категории:

Startup and Shutdown Старт и завершение

Command Window and History Командное окно и история команд

Help for Using MATLAB Математические операции и анализ данных.

Workspace Рабочее пространство

Managing Filles Файлы управления

Programming Tools Инструменты программирования

System Система

3.1. Начало и завершение сессии

Традиционный интерфейс Windows. Сеанс работы с MATLAB называется - сессия. Сессия начинается работой в окне командного режима.

Возможны файлы:

.m М-файл Функция MATLAB

.mex Script-файл Из других языков

.mat Mat-файл Из Workspace

.txt Фрагмент сессии

Форма представления сессии – текстовый редактор. В его строках могут находиться:

Приглашение для ввода >>.

Вывод результата.

Page 24: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Сообщение об ошибке.

Сессия – текущий документ MATLAB. Для сохранения результатов используются:

Команда Что? Файл?

save сохранить .mat

load загрузить .mat

diary дневник .txt

В MATLAB используются внутренние системные параметры, которые выбираются по умолчанию и удовлетворяют большинство пользователей.

При желании изменить их следует использовать команду меню File=>Preferences. Она выводит диалоговое окно, в котором можно выбрать формат чисел, межстрочного пробела, тип редактора и др.

Структура окна:

Слева панель выбора категории параметров.

Справа панель редактирования параметров для выбранной категории.

В примере показаны возможности установок параметров для командного окна.

Page 25: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

3.2. Справка по использованию MATLAB

3.2.1. Информационная среда системы MATLAB

Включает в себя:

Диалог с пользователем через командное окно.

Просмотр рабочей области и путей доступа.

Page 26: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Редактор/отладчик М-файлов.

Работа с файлами.

Экспорт и импорт данных.

Интерактивный доступ к справочной информации.

Динамическое взаимодействие с внешними системами.

3.2.2. Окна MATLAB

№ Окно Назначение

1. MATLAB Главное окно системы. Док, может включать окна 2...7

2. Command Window Командное окно

3. Command History История команд

4. Current Directory Текущий каталог – менеджер файлов

5. Workspace Рабочая область

6. Help Справка

7. Profilier Профилировщик для оптимизации М-файлов

8. M-File Редактор/отладчик М-файла

9. Figure # Графическое окно, # - номер окна от 1

10. Model Окно модели Simulink

11. Simulink Library Browser Браузер библиотек компонент Simulink

12. GUI – Graphic User Interface

Графический пользовательский интерфейс

При старте пользователь видит док - главное окно 1, в котором размещаются до 5 дочерних окон (2...5, 7), число и список которых можно регулировать. Дочерние окна отображаются в панелях дока (их до 4). Если число окон в доке больше 4, то используются вкладки в панелях. Меню и содержание панели инструментов дока совпадает с меню и панелью инструментов окна, выбранного пользователем для работы. Каждое из дочерних окон можно выделить из дока, как автономное, и разместить произвольно. По умолчанию отображаются окна:

Tекущая папка (Current Directory) - слева. Используется для отображения файлов в текущей папке.

Рабочая область (Workspace) – справа сверху. Используется для отображения переменных в рабочей области. Для каждой переменной указываются: Name – имя, Value – значение, Min – минимум, Max –максимум.

История команд (Command History) – справа снизу.

Командное окно (Command Window) – в центре. В этом окне начинается работа в MATLAB. В окне выводится поясняющий текст для пользователя

Page 27: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

и символ >> приглашения, за которым пользователь должен писать командную строку, исполняемую после нажатия клавиши Enter.

3.2.3. Profilier (профилировщик)

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

Help – Справка. Окно справки имеет сложную структуру и поэтому выводится командой Help главного меню MATLAB всегда в автономном окне. Окно справки содержит два поля:

Page 28: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Навигатор слева. Cодержит кнопки для выбора режима навигации (Content - содержание, Search Results – результаты поиска) и поле Search - поиск.

Информация справа.

Editor (Редактор, отладчик М-файла). Используется для создания или редактирования М-файлов. Для вызова окна используется команда меню MATLAB File=>New=>M-file.

Page 29: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

3.2.4. Figure (Графическое окно)

В MATLAB графики отображаются в автономных окнах. Для вызова окна используется команда меню MATLAB File=>New=>Figure. Окно содержит:

Панели инструментов.

Объект Axes (Оси) с графиками

Model (Модель Simulink). В MATLAB встроена система имитационного моделирования блочно организованных систем Simulink. Модель создается в

Page 30: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

автономном окне, для вызова которого используется команда меню MATLAB File=>New=>Model. Генерируется пустое окно модели.

Модель составляется из заранее запрограммированных блоков путем их переноса из библиотеки в окно модели. Доступ к библиотекам обеспечивается браузером, окно которого вызывается командой Library Browser из меню модели.

Page 31: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

3.2.5. Simulink Library Browser

Окно браузера содержит две панели:

В левой находится оглавление библиотек.

В правой - содержимое выбранного раздела.

После заполнения блоками окно модели имеет вид подобный этому:

Page 32: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

3.2.6. Графический пользовательский интерфейс

В MATLAB можно создавать графический пользовательский интерфейс (GUI - Graphic User Interface). Для этого предназначен специальный редактор GUIDE, вызываемый командой меню MATLAB File=>New=>GUI. При вызове появляется окно запуска инструмента, в котором на вкладке выбора шаблонов можно из списка выбрать подходящую заготовку.

Page 33: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

После выбора проект GUI сохраняется в вида двух файлов:

Графика - имя.fig,

Шаблона кода программы - имя.m.

Код графика автоматически открывается в ИСР GUIDE. В нем имеются график справа и навигатор слева.

Page 34: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

В нем GUI конструируется путем переноса компонент из панели навигатора в график. Затем GUI сохраняется, при этом корректируется и файл кода, в который добавляются фрагменты использованных компонент. Пользователь затем заносит а файл кода команды обработки. Затем код отлаживается во встроенном отладчике.

В примере простого GUI можно анализировать вид графика поверхности при использовании разных типов графика и данных.

Page 35: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Функции разбиты на категории:

Editing Files - редактирование файлов.

Debugging Programs - отладка программ.

.MATLAB Program Performance - параметры программ MATLAB.

Source Control - управление исходниками кода.

Publishing - публикация в выбранном формате.

Функции разбиты на категории:

Operating System Interface - интерфейс операционной системы.

MATLAB Version and License= версия и лицензия MATLAB.

4. Импорт и экспорт данных

Функции импорта и экспорта данных можно посмотреть в браузере функций в каталоге Data Import and Export..

Page 36: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Определены категории:

File Opening, Loading, Saving Открытие, загрузка, сохранение файлов

Text Files Текстовые файлы

Spreadsheets Электронные таблицы

Low Level File I/O Ввод/вывод низкоуровневых файлов

Images Изображения

Scientific Data Научные данные

Audio and Video Аудио и видео

XML documents XML документы

Memory Mapping Карты памяти

File Name Construction Конструирование имени файла

File Compression Сжатие файла

Internet File Access Доступ к файлам Интернета

Page 37: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

5. Математика

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

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

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

Определены категории:

Arrays and Matrices Массивы и матрицы

Linear Algebra Линейная алгебра

Elementary Math Элементарная математика

Polynomials Полиномы

Interpolation and Computational Geometry

Интерполяция и вычислительная геометрия

Cartesian Coordinate System Conversion

Преобразования систем координат

Nonlinear Numerical Methods Нелинейные численные методы

Specialized Math Специальная математика

Page 38: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Sparse Matrices Разреженные матрицы

Math Constants Математические константы

Операции для предметных областей определены в пакетах расширения MATLAB.

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

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

5.1. Массивы и матрицы

Определены категории:

Basic Information Основная информация

Elementary Matrices and Arrays Элементарные матрицы и массивы

Array Operations Операции с массивами

Array Manipulation Манипуляции с массивами

Specialized Matrices Специальные матрицы

5.1.1. Основная информация

Основные функции

Page 39: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Функция Описание

disp(A) Вывод на дисплей массива А без имени.

isempty(A) А пустой? 1, если да.

isequal(A) А = В? 1, если да.

isfloat(A) А – числа с плавающей точкой? 1, если да.

isinteger(A) А – целые числа? 1, если да.

islogical(A) А - логический? 1, если да.

isnumeric(A) А - числа? 1, если да.

isscalar(A) А - скаляр? 1, если да.

issparse(A) А - разреженный массив? 1, если да.

isvector(A) А - вектор? 1, если да.

length(A) Длина А.

size(A) Размер массива (вектор длины каждого измерения).

5.1.2. Элементарные матрицы и массивы

Основные функции

Функция Описание

еуе(n) Единичная матрица размером nxn, состоит из нулей, главная дагональ - единицы. Это для матричного счисления эквивалент 1, умножение на нее матрицу не меняет.

ones(m,n) Матрица размером mxn из единиц.

zeros(m,n) Матрица размером mxn из нулей.

linspace(a,b,n) Массив из n (по умолчанию 100) точек, равномерно распределенных между а и b.

logspace(a.b,n) Массив из n (по умолчанию 50) точек, равноотстоящих в логарифмическом масштабе между 10^а и 10^b.

randn(m,n) Матрица размером mxn со случайными элементами, распределенными по нормальному закону с нулевым математическим ожиданием и среднеквадратическим отклонением, равным 1.

diag(v.k) Матрица с элементами v на k-ой диагонали. Остальные элементы матрицы - нули. Диагональ k:

при k=0 - главная диагональ (из левого верхнего угла матрицы в правый нижний угол),

при k>0 - одна из диагоналей выше главной,

при k<0 - одна из нижних диагоналей.

Page 40: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

5.1.3. Операции с массивами

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

Оператор Функция Описание

A+ B plus(A,B) Сложение. A, B должны быть одинакового размера. Одно из них может быть скаляром.

+ A uplus(A) Унарный плюс.

A – B minus(A,B) Вычитание. A, B должны быть одинакового размера. B может быть скаляром.

- A uminus(A) Унарный плюс.

A * B mtimes(A,B) Умножение матриц. Для нескалярных A, B число столбцов в А должно быть равно числу строк в В.

A .* B times(A,B) Умножение массивов. Почленное умножение A и B. A, B должны быть одинакового размера. Одно из них может быть скаляром.

A / B mrdivide(A,B) Деление матриц правое. A делится на B.Тот же результат дает A*inv(B).

A ./ B rdivide(A,B) Деление массивов. Почленное деление A на B. A, B должны быть одинакового размера. Одно из них может быть скаляром.

A \ B mldivide(A,B) Деление матриц левое. B делится на A. Тот же результат дает inv(A)*B.

A .\ B ldivide(A,B) Деление массивов левое. Почленное деление B на A. A, B должны быть одинакового размера. Одно из них может быть скаляром

A : H : B A : B

colon(A,H,B) colon(A,B)

Вертикальное двоеточие. Список от A до B с шагом H. Вертикальное двоеточие. Список от A до B с шагом 1 (или -1).

A ^ B mpower(A,B) Возведение матрицы в степень. A возводится в степень B.

A .^ B power(A,B) Возведение массива в степень. Компоненты A возводятся в степень B. A, B должны быть одинакового размера. Одно из них может быть скаляром.

Page 41: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

A ‘ ctranspose(A) Транспонирование матрицы. Для комплексных матриц есть преобразование комплексных значений в сопряженные.

A.’ transpose(A) Транспонирование массива. Для комплексных массивов нет преобразования комплексных значений в сопряженные.

5.1.4. Манипуляции с массивами

Основные функции

Функция Описание

cat (dim, А, В)

Объединяет массивы А и В в соответствии с dim:

dim = 1 - горизонтальная конкатенация,

dim = 2 - вертикальная конкатенация,

dim = 3 - многомерный массив размерности 3 и т. д.

fiiplr(A) Зеркально переставляет столбцы матрицы А относительно вертикальной оси.

fiiplud(A) Зеркально переставляет столбцы матрицы А относительно горизонтальной оси.

rot90(A,k) Поворот матрицы А на угол 90*k градусов, где k — целое число.

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

Оператор Функция Описание

unique(A) Уникальные элементы. Множество со значениями А без повторений.

ismember(A,B) Вектор с длиной А, который содержит 1 в позициях элементов А, имеющихся в В.

union(A,B) Объединение. Множество со значениями А и В без повторений.

setdiff(A,B) Вычитание. Множество значений в А, которых нет в В.

intersect(A,B) Пересечение. Множество из общих элементов A, B.

Page 42: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

5.1.5. Специализированные матрицы

Основные функции

Функция Описание

hankel Матрица Ханкеля

pascal Матрица Паскаля, значения целочисленные из треугольника Паскаля.

hadamard Матрица Адамара, состоящая из 1 и -1.

magic Магическая матрица - магический квадрат. Содержит элементы от 1 до n2, суммы по всем направлениям одинаковы. Значение n должно быть больше или равно 3.

hilb Матрица Гильберта

5.2. Линейная алгебра

Инструментарий можно увидеть в каталоге:

Определены категории:

Matrix Analysis Матричный анализ

Linear Equation Линейные уравнения

Eigenvalues and Singular Values Собственные и особые значения

Matrix Logarithms and Exponents Матричные логарифмы и экспоненты

Factorization Факторизация

Ниже часто употребляемые функции.

5.2.1. Матричный анализ

Функция Описание

norm(A,p) Нормализация A. Возвращает норму p, которая характеризует значения в матрице:

Page 43: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

при p=1 это сумма модулей,

при p=2 (по умолчанию) это Эвклидова норма - квадратный корень из суммы квадратов,

при p=∞ это сумма значений.

normest(S,tol) Возвращает оценку нормы 2 матрицы S с точностью tol.

cond(X) Число обусловленности, основанное на второй норме, то есть отношение самого большого сингулярного числа X к самому малому. Значение cond(X), близкое к 1, указывает на хорошо обусловленную матрицу.

rank(A,tol) Оценка k числа независимых столбцов матрицы A с точностью tol.

det(X) Определитель квадратной матрицы X.

trace(A) След - сумма диагональных элементов A.

5.2.2. Линейные уравнения

Пусть система линейных уравнений представлена в матричной форме: A*X=B, где A – матрица коэффициентов, X – вектор независимых переменных, B _ вектор правой части системы. Тогда для решения системы достаточно выполнить матричную операцию X=B/A (или X=A\B). Определены функции:

Функция Описание

inv(X) Матрица, обратная квадратной матрице X.

pinv(A,tol) В = pinv(A) — возвращает матрицу, псевдо обратную матрице А.

5.2.3. Собственные и особые значения

Функция Описание

eig(A) Вектор собственных значений А.

eigs(A) Несколько векторов собственных значений разреженной А.

svd(X) Сингулярное (необычное) значение X.

svds(X) Несколько сингулярных значений X.

5.2.4. Матричные логарифмы и экспоненты

Функция Описание

expm(X) Матричная экспонента от Х.

llogm(X) Матричный натуральный логарифм от Х.

sqrtm(X) Матричный квадратный корень из Х.

Page 44: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

5.2.5. Факторизация

Факторизация матриц – это представление матрицы в виде произведения матриц.

Функция Описание

chol(X) Факторизация Х по методу Холецкого.

lu(X) LU Факторизация Х. Возвращаются две треугольные матрицы (нижняя, верхняя).

qz(X) QZ Факторизация Х.

5.3. Элементарная математика

Функции разбиты по категориям.

Определены категории:

Trigonometric Тригонометрия

Exponential Экспоненты

Complex Линейные уравнения

Rounding and Remainder Округления и остатки

Discrete Math Дискретная математика

Ниже часто употребляемые функции.

Page 45: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

5.3.1. Тригонометрия

Функция Описание

sin(X) Синус.

cos (X) Косинус.

tan(X) Тангенс.

cot (X) Котангенс.

sec(X) Секанс.

csc(X) Косеканс

asin(X) asind (X)

Обратный синус. То же самое, но результат в градусах.

acos (X) acosd (X)

Обратный косинус. То же самое, но результат в градусах.

atan(X) atand(X) atan2 (Y, X)

Обратный тангенс. Результат в квадрантах 1 и 4. То же самое, но результат в градусах. 4-ех квадрантный арктангенс. Мнимые части аргументов игнорируются.

acot (X) acotd (X)

Обратный котангенс. То же самое, но результат в градусах.

asec(X) asecd(X)

Обратный секанс. То же самое, но результат в градусах.

acsc(X) acscd(X)

Обратный косеканс. То же самое, но результат в градусах.

sinh(X) Синус гиперболический.

cosh (X) Косинус гиперболический.

tanh(X) Тангенс гиперболический.

coth (X) Котангенс гиперболический.

sech(X) Секанс гиперболический.

csch(X) Косеканс гиперболический.

asinh(X) Обратный синус гиперболический.

acosh (X) Обратный косинус гиперболический.

atanh(X) Обратный тангенс гиперболический.

acoth (X) Обратный котангенс гиперболический.

asech(X) Обратный секанс гиперболический.

acsch(X) Обратный косеканс гиперболический.

5.3.2. Экспоненты (степени, корни, логарифмы)

Функция Описание

pow2(X) 2 в степени Y.

nextpow2(X) Минимальное р, при котором 2 в степени р больше модуля А.

Page 46: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

realpow(X,Y) X в степени Y.

sqrt(X) Квадратный корень из Х..

realsqrt(X) Квадратный корень из неотрицательного вещественного Х..

nthroot (X) Вещественный n-ый корень из Х.

exp(X) Экспонента от Х.

expm1(X) Экспонента от Х минус 1.

log(X) Натуральный логарифм от Х.

reallog(X) Натуральный логарифм от неотрицательного вещественного Х.

log1p(X) Натуральный логарифм от (1+Х).

log2(X) Логарифм от Х по основанию 2.

log10(X) Логарифм от Х по основанию 10.

5.3.3. Комплексные числа

Функция Описание

abs(X) Абсолютное значение Х.

angle(Z) Угол Z в радианах.

complex(a,b) Возвращает комплексное число (a - вещественная часть, b – мнимая часть).

conj(X) Сопряженное комплексное число.

cplxpair(X) Сортирует комплексные числа, группируя сопряженные пары.

i или j Мнимая единица.

imag(X) Мнимая часть комплексного числа.

real(X) Вещественная часть комплексного числа.

isreal(X) Х - вещественный? Возвращает 1, если X вещественный, и 0, если хотя бы один компонент имеет мнимую часть.

sign(X) Знак Х. Возвращается: 1 при Х>0, 0 при Х=0, -1 при Х<0.

5.3.4. Округления и остатки

Функция Описание

fix(X) Целая часть Х.

floor(X) Ближайшее к Х целое в сторону минус бесконечность.

ceil(X) Ближайшее к Х целое в сторону плюс бесконечность.

round(X) Округление Х до ближайшего целого.

mod(X,Y) Целочисленное деление X на Y.

rem(X,Y) Остаток от целочисленного деления X на Y.

Page 47: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

5.3.5. Дискретная математика

Функция Описание

factor(X) Простые сомножители (имеют сомножителями 1 и самого себя) для Х.

factorial(X) Факториал Х.

gcd(X,Y) Наибольший общий делитель для X,Y.

isprime(X) Х – простой множитель? Возвращает 1, если да.

lcm(X,Y) Наименьший общий множитель (число, на которое X и Y делятся без остатка).

nchoosek(n,k) Число комбинаций из n элементов по k для неотрицательных целых аргументов.

perms(X,) Перестановки компонент вектора X.

primes(n) Список простых сомножителей, не превышающих n.

rat(X,tool) Представляет X как отношение целых чисел.

5.4. Полиномы

Ниже часто употребляемые функции.

Функция Описание

poly(X) Коэффициенты характеристического полинома (собственные значения) квадратной матрицы Х по убывающим степеням.

polyder(a,b) Коэффициенты характеристического полинома (собственные значения) от произведения полиномов a,b по убывающим степеням.

roots(р) Корни уравнения по полиному р с коэффициентами по убывающим степеням.

polyfit(X,Y,n) Коэффициенты полинома от Х порядка n для подгонки Y(X).

polyval(p,X) Вычисляет полином p для вектора Х.

polyvalm(p,X) Вычисляет полином p для матрицы Х.

residue(b,a) residue(r,p,k)

Преобразует отношение полиномов b/a в простые дроби с коэффициентами r/p и остатком k. Обратное преобразование.

5.5. Интерполяция и вычислительная геометрия

Определены категории:

Interpolation Интерполяция

Delaunay Triangalation and Tesselation Разбиения Делоне и мозаики

Page 48: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Convex Hull Выпуклое множество

Voronoi Diagrams Диаграммы Вороного

Domain Generation Генерация домена

5.6. Преобразования систем координат

Часто употребляемые функции.

Функция Описание

cart2sph(X,Y,Z) Декартовы (прямоугольные) в сферические.

sph2cart (X,Y,Z) Сферические в декартовы (прямоугольные).

cart2pol(X,Y,Z) Декартовы (прямоугольные) в циллиндрические.

pol2cart(X,Y,Z) Циллиндрические в декартовы (прямоугольные).

5.7. Нелинейные численные методы

Определены категории:

Ordinary Differential Equations

Обыкновенные дифференциальные уравнения

Delay Differential Equations Дифференциальные уравнения с задержками

Boundary Value Problems Проблемы граничного значения

Partial Differential Equations Дифференциальные уравнения с частными производными

Optimization Оптимизация

Numerical Integration (Quadrature)

Численное интегрирование (квадратурное)

5.7.1. Обыкновенные дифуравнения

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

Функция Описание

ode45 Одношаговые методы Рунге-Кутта 4 и 5 порядка. Точность средняя. Классический метод, рекомендуется для начальной пробы.

ode23 Одношаговые явные методы Рунге-Кутта 2 и 4 порядка. Точность низкая.

ode23s Одношаговый метод Розенброка 2 порядка. Точность низкая, скорость повышенная.

ode23t Метод трапеций с интерполяцией. Точность низкая.

ode23tb Неявный метод Рунге-Кутта в начале решения и метод,

Page 49: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

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

ode113 Многошаговый метод Адамса-Башворта-Мултона переменного порядка. Точность зависит от задачи.

ode15s Многошаговый метод переменного порядка (1...5, по умолчанию 5). Точность ниже средней. рекомендуется использовать если ode45 слишком медленный.

5.7.2. Дифуравнения с задержками

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

Функция Описание

dde23 Одношаговые методы Рунге-Кутта 4 и 5 порядка. Точность средняя. Классический метод, рекомендуется для начальной пробы.

5.8. Специализированная математика

Ниже часто употребляемые функции.

Функции Описание

airy(Z) Эйри. Возвращает пару линейно независимых решений линейного дифференциального уравнения вида

besselj(nu.Z) – 1 рода besseli(nu.Z) – 1 рода, модиф. bessely(nu.Z) – 2 рода besselk(nu.Z) – 2 рода, модиф. besselh(nu,Z) – 3 рода

Бесселя. Это решения линейного дифференциального уравнения вида

Каждое решение описыватся своей функцией Бесселя, которые характеризуется родом и порядком (nu).

beta(Z,W) Бета-функция

betainc(X,Z,W) Неполная бета-функция. В ней верхний предел

Page 50: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

интеграла равен X.

betaln(Z,W) Натуральный логарифм от бета-функции.

ellipj(U,M)

Возвращает функции Якоби от эллиптического интеграла

sn(u)=sin(φ),

cn(u)=cos(φ),

dn(u) = (1-sin2(φ)1/2,

ellipke(M,tool) Возвращает полный эллиптический интеграл 1 и 2 рода.

erf(X) Функция ошибки

expint(X) Интегральная показательная функция

gamma (А) gamma iпс(X,А)

Гамма-функция Неполная гамма-функция

legendre(n.X) Функция Лежандра степени n и порядков m = 0,1..... n.

5.9. Разреженные матрицы

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

Определены категории

Elementary Sparse Matrix Элементарные разреженные матрицы

Full to Sparse Conversion Преобразование полной матрицы в разреженную матрицу

Sparse Matrix Manipulation Манипуляции с разреженными матрицами

Reordering Algorithms Алгоритмы переупорядочения

Linear Algebra Линейная алгебра

Linear Equations (Iterative Methods)

Линейные уравнения (итеративные методы)

Tree Operations Операции с деревьями

5.10. Математические константы

Это широко используемые на практике значения, которые можно использовать в М-файлах. Для их получения используются функции:

Функция Описание

Page 51: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

ans Возвращает последнее значение внутренней переменной ans.

eps Возвращает точность операций с плавающей точкой.

intmax Возвращает максимальное значение целого числа.

intmin Возвращает минимальное значение целого числа.

realmax Возвращает максимальное значение модуля вещественного числа.

realmin Возвращает минимальное значение модуля вещественного числа.

pi Константа pi.

i, j Мнимая единица.

inf Бесконечность.

NaN Не число.

computer Тип компьютера.

version Строка с версией MATLAB.

Page 52: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

6. Анализ данных

Инструментарий можно увидеть в каталоге:

Определены категории

Basic Operations Основные операции

Descriptive Statistics Дескрипторная статистика

Filtering and Convolution Фильтрация и свертка

Interpolation and Regression Интерполяция и регрессия

Fourier Transformations) Преобразования Фурье

Derivatives and Integrals Производные и интегралы

Time Series Objects Объекты временных последовательностей

Time Series Collections Коллекции временных последовательностей

Page 53: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

7. Программирование и типы данных

Инструментарий можно увидеть в каталоге:

Определены категории

Data Types Типы данных

Data Type Conversion Преобразование типов данных

Operators and Special Symbols Операторы и специальные символы

Strings Строки

Bit-Wise Operations Бит-ориентированные операции

Logical Operations Логические операции

Relational Operations Операции сравнения

Set Operations Установочные операции

Date and Time Operations Операции с датой и временем

Programming in MATLAB Программирование в MATLAB

7.1. Ключевые слова

Ключевые слова MATLAB резервирует для внутренних задач. Их нельзя использовать в качестве имен переменных. Их список можно получить функцией iskeyword (это ключевые слова). Она возвращает список ключевых слов:

ans = 'break' 'case'

Page 54: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

'catch' 'continue' 'else' 'elseif' 'end' 'for' 'function' 'global' 'if' 'otherwise' 'persistent' 'return' 'switch' 'try' 'while'

7.2. Типы данных

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

Иерархия типов данных в MATLAB:

Array. Массив (полный или разреженный)

logical. Логический тип со значениями true (истина) = 1, false (ложь) = 0.

char. Символ.

numeric. Численный тип.

double. Тип с двойной точностью с плавающей точкой, максимальная точность.

single. Тип с одинарной точностью с плавающей точкой, имеет меньшую точность, но и меньшую память.

nt8, int16, int32, int64. Целые числа со знаком с размерностями 8, 16, 32, 64 бита.

uint8, uint16, uint32, uint64. Положительные целые числа с размерностями 8, 16, 32, 64 бита.

cell. Ячейка, может содержать любые данные, в том числе массивы.

structure. Структура – массив структур в стиле языка программирования С.

user classes. Классы пользователя.

Page 55: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Java. Объекты, сконструированные из классов языка программирования Java.

function handle. Дескриптор функции. Вы можете передавать его в другие функции.

Определены категории

NumericTypes Численные типы

Characters and Strings Символы и строки

Structures Структуры

Cell Arrays Массивы ячеек

Map Container Objects Объекты с контейнерами карт

Function Handles Дескрипторы функций

Java Classes and Objects Классы и объекты Java

Data Type Identification Идентификация типов данных

7.2.1. Численные типы

MATLAB имеет типы для представления вещественных (с дробной частью) и целых чисел.

Для представления вещественных чисел MATLAB использует форматы с плавающей точкой. В них число представляется в виде <Знак><Мантисса>*<2 в степени порядок>.

Поле, отведенное под число, разделено на три подполя.

Page 56: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Знак числа (один бит) Мантисса Порядок

MATLAB имеет 2 типа чисел с плавающей точкой с размерностями 32 и 64 бита. Они отличаются диапазоном чисел и точностью. Определены:

Тип Бит знака

Биты мантиссы

Биты порядка

Модуль минимума

Модуль максимума

single 31 30...23 22...0 1.18E-038 3.4E+038

double 63 62...52 51...0 2.22E-308 1.8E+308

Модуль минимума определяет точность представимых чисел. Числа, модуль которых меньше модуля минимума, интерпретируются, как машинный 0.

Модуль максимума определяет диапазон представимых чисел Числа, модуль которых больше модуля максимума, интерпретируются, как Inf (Infinity –бесконечность).

По умолчанию MATLAB использует тип double, как имеющий максимальные точность и диапазон.

Для работы с целыми числами MATLAB имеет 8 типов (4 знаковых и 4 беззнаковых) с размерностями 8, 16, 32, 64 бита. Они отличаются диапазоном доступных чисел.

Определены знаковые типы:

Тип Минимум Максимум

nt8 -(2 в степени 7) = -128 (2 в степени 7) - 1 = 127

int16 -(2 в степени 15) = -32768 (2 в степени 15) - 1 = 32767

int32 -(2 в степени 31) (2 в степени 31) - 1

int64 -(2 в степени 63) (2 в степени 63) - 1

Определены беззнаковые типы:

Тип Минимум Максимум

uint8 0 (2 в степени 8) -1 = 255

uint16 0 (2 в степени 16) - 1 = 65535

uint32 0 (2 в степени 32) - 1 =

uint64 0 (2 в степени 64) - 1 =

В MATLAB все числа комплексные, они состоят из вещественной части Real и мнимой части Imag, которая снабжается символом мнимой единицы (квадратный корень из -1). Для обозначения мнимой единицы используются символы (i) или (j).

Page 57: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Для создания комплексных чисел можно использовать:

Оператор ввода Z = <Real> + <Imag>j. Символ мнимой единицы вводится после значения мнимой части без знаков операции.

Функцию complex.

Для значений, которые не являются числами, в MATLAB используется специальное значение NaN (Not a Number), что означает <не число>. Примеры использования NaN: в операциях 0/0 и Inf/Inf есть нераскрытая неопределенность, численного ответа указать нельзя.

При выводе численных данных используются форматы, удобные пользователю:

Формат Результат Пример

short 5 значащих цифр с фиксированной точкой (по умолчанию).

1.5708

short e 5 значащих цифр с плавающей точкой. 1.5708e+00

long 15 значащих цифр с фиксированной точкой для double. 8 значащих цифр с фиксированной точкой для singe.

3.14159265358979 3.1415926

long e 15 значащих цифр с фиксированной точкой для double. 8 значащих цифр с фиксированной точкой для singe.

3.14159265358979e+00 3.1415926e+00

rat Отношение малых целых чисел. 115/245

hex 16-ричное число 154ac8f

bank Банковское преставление. Рубли и копейки с разделителем.

5.48

7.2.2. Символы и строки

В MATLAB тип char – символ Unicod, значением которого является номер символа в таблице кодировки. На экране он отображается, как символ.

Строка (string) – одномерный массив символов. Фактически строка – это вектор с номерами кодов символов. Какие символы будут отображаться на экране, зависит от используемого шрифта.

Если Вы используете двумерный массив символов (содержит набор строк), то строки должны быть одинаковой длины. Причина – двумерный массив должен быть прямоугольным.

Page 58: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

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

Для создания массивов символов применяются:

Для одной строки ввод значений символов в апострофах.

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

Для сравнения строк предназначены функции:

Функция Описание

strcomp Возвращает true, если строки идентичны, false в противном случае.

strcompi То же самое, но в строках игнорируются пробелы.

strncomp Возвращает true, если первые n символов строк идентичны, false в противном случае.

strncompi То же самое, но в строках игнорируются пробелы.

Для анализа символов в строке предназначены функции:

Функция Описание

isletter Это буквы? Возвращает строку той же длины, в которой размещены 1 в позициях букв алфавита и 0 в остальных. Цифры – это не буквы.

isspase Это пробелы? Возвращает строку той же длины, в которой размещены 1 в позициях пробелов и 0 в остальных. К пробелам относятся все небуквенные символы.

Для преобразования численных значений в строки предназначены функции:

Функция Описание Пример

char Преобразует положительные числа в символы.

[72 105] => ‘Hi’

dec2hex Преобразует положительные числа в 16-ричные символы.

[72 10] => ’48 A’

dec2bin Преобразует положительные числа в двоичные символы.

[72 105] => ‘1001000 1101001‘

Для преобразования строк в численные значения в предназначены функции:

Page 59: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Функция Описание Пример

uintN N=8, 16, 32 или 64. Преобразует символы в числа.

‘Hi’ => [72 105]

hex2dec Преобразует 16-ричные символы в числа. ’48 A’ =>[72 10]

bin2dec Преобразует положительные числа в двоичные символы.

‘1001000 1101001‘ => [72 105]

7.2.3. Структуры

Наиболее важная структура MATLAB – маcсив, в котором могут размещаться числа, символы, логические величины, другие структуры. Для представления одиночных чисел используется массив 1х1, векторов длиной N – массив 1хN.

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

Доступ к элементам многомерного массива осуществляется по номерам индексов:

A(строка, ряд, размерность 3, размерность 4, ...)

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

Поле структуры идентифицируется, как <Имя структуры>.<Имя поля уровня 1>. <Имя поля уровня 2>.

Структура может быть массивом. Например:

Persons. Массив персон. person1. Персона 1. name. Имя. family. фамилия. country. Гражданство. person2. name. family. country.

Для создания структур можно использовать операторы и функции.

Пример 1. Использование операторов.

Пример 2. Использованием функции struct.

Page 60: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

person1.name = 'Иван'; person1.family = 'Петров'; person1.country = 'Россия' person2.name = 'John'; person2.family = 'Smith'; person2.country = 'USA' Результат в командном окне: person1 = name: 'Иван' family: 'Петров' country: 'Россия' person2 = name: 'John' family: 'Smith' country: 'USA'

person1 = struct('name','Иван',... 'family','Петров',... 'country','Россия') person2 = struct('name','John',... 'family','Smith',... 'country','USA') Результат в командном окне: person1 = name: 'Иван' family: 'Петров' country: 'Россия' person2 = name: 'John' family: 'Smith' country: 'USA'

Для работы со структурами предназначены функции:

Функция Описание

fieldnames Возвращает имена полей структуры.

isfield(X) Это поле? Возвращает 1 для поля в массиве структур.

isstructure(X) Это структура? Возвращает 1 для структуры.

rmfield Перемещает поле структуры.

struct(X,F) Создает или преобразует массив структур. X - имя поля, Y – значение поля

7.2.4. Массивы ячеек

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

Существуют два способа присваивания данных отдельным ячейкам:

Page 61: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

индексацией ячеек;

индексацией содержимого.

Рассмотрим первый способ.

Пример 1. Массив 2х2 ячеек X(1,1)={'Курить вредно!'}; % Cтрока символов X(1,2)={[1 2;3 4]}; % Матрица 2х2 чисел X(2,1)={2+3i}; % Комплексное число X(2,2)={0:0.1:1} % Вектор из 11 чисел Результат в командном окне: X = 'Курить вредно!' [2x2 double] [2.0000+ 3.0000i] [1x11 double]

Пример 2. Массив 2х2 ячеек и функция cell X=cell(2) % Массив 2х2 пустых ячеек X(1,1)={'Курить вредно!'}; % Cтрока символов X(1,2)={[1 2;3 4]}; % Матрица 2х2 чисел X(2,1)={2+3i}; % Комплексное число X(2,2)={0:0.1:1} % Вектор из 11 чисел Результат в командном окне: X = [] [] [] [] X = 'Курить вредно!' [2x2 double] [2.0000+ 3.0000i] [1x11 double]

7.2.5. Дескрипторы функций

Это средство для прямого вызова функции из другой функции. Вы можете передать дескрипторы функций в другую функцию (она часто называется функция функций).

Для создания дескриптора fhandle одной функции с именем FunctionNname используется операция fhandle = @FunctionNname. Дескрипторы функций целесообразно создавать для нескольких функций, это упрощает дальнейшее программирование.

Page 62: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

В примере функция plot рисует график функции 2, выбираемой из трех функций (sin, cos, tan). Сначала создается дескриптор функций, представляющий собой вектор из дескрипторов нужных функций. Затем этот дескриптор передается в функцию рисования.

trigFun = {@sin, @cos, @tan}; % Создать дескриптор функций plot ( trigFun{2} (-pi:0.01:pi) ) % Рисовать, используя функцию 2

В программах для ссылок используются специальные символы:

Символ Назначение

* Звездочка Групповой символ, замещает один или несколько символов.

? Знак вопроса Символ замещения одного символа.

@ Собака Конструктор дескриптора функций. Папка, которая поддерживает классы MATLAB.

: Вертикальное двоеточие

Оператор создания последовательности чисел.

, Запятая Разделитель элементов вектора.

{} Фигурные скобки Включают массив ячеек.

. Одна точка Разделитель имени структуры и поля. Разделитель имени класса и метода.

.. Две точки Указатель родительского или текущего каталога.

. .. Три точки Признак продолжения оператора в другой строке.

.() Точка и круглые скобки

Для выделения имен полей динамической структуры.

! Восклицательный знак

Ставится перед командами операционной системы.

() Круглые скобки Включает аргументы для функций..

% Проценты Признак комментария.

; Точка с запятой Разделяет компоненты в массиве. Блокирует выод результата в командное окно. Разделение команд в одной строке.

‘ ‘ Одиночные кавычки В них размещается строка.

Пробел Разделяет элементы вектора.

/ \ Прямой и обратный слеш

Разделение элементов в пути к файлу.

{ } Квадратные скобки Внутри них массив.

7.3. Преобразования типов данных

Инструментарий можно увидеть в каталоге:

Page 63: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Определены категории

Numeric Числа

String to Numeric Cтроки в числа

Numeric to Strings Числа в строки

Other Conversions Другие преобразования

Тип logical (логический) применяется в условных операторах и для логической индексации массивов. Он имеет два состояния true (истина) и false (ложь), которые используют числа 1 и 0, соответственно. Для создания массивов логического типа применяются:

Значения true и false в операторе ввода.

Функции true и false.

Для логической индексации массивов предназначены функции:

Функция Описание

whos (x) Кто это? Возвращает значение и тип для х.

islogical (x) Это логический? Возвращает true, если да, false в противном случае.

isa (x, ‘logical’) х - логический? Возвращает true, если да, false в противном случае.

class (x) Возвращает строку с именем типа данных.

cellfun (x, ‘logical’)

Проверяет каждую ячейку массива на логический тип..

7.4. Строки

Строковые функции можно посмотреть в браузере функций в каталоге Strings.

Page 64: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Определены категории

Descriptions of Strings in MATLAB Описания строк в MATLAB

String Creation Создание строк

String Identification Идентификация строк

String Manipulation Манипуляции со строками

String Parsing Синтаксис строк

String Evaluation Вычисления со строками

String Comparison Сравнение строк

7.5. Побитовые операции

Инструментарий можно увидеть в каталоге:

Page 65: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Побитовые операторы для неотрицательных целых числам дают доступ к битам двоичного представления чисел.

Оператор Функция Описание

bitand(A,B) Побитовая операция «И», логическое умножение.

bitor(A,B) Побитовая операция «ИЛИ», логическое сложение.

bitcmp(A,N) Побитовая операция «НЕ» для A, инверсия. N – длина ответа.

bitxor(A,B) Побитовая операция «Исключающее ИЛИ», или сложение по модулю 2.

7.6. Логические операции

Инструментарий можно увидеть в каталоге:

Page 66: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Логические операторы бывают поэлементными и побитовыми.

Поэлементные операторы работают с массивами логического типа.

Оператор Функция Описание

A & B and(A,B) Операция «И», логическое умножение.

A | B or(A,B) Операция «ИЛИ», логическое сложение.

~ A not(A,B) Операция «НЕ», инверсия.

A xor B xor(A,B) Операция «Исключающее ИЛИ», или сложение по модулю 2.

any (A) True, если все элементы А равны 0.

all (A) True, если все элементы А не равны 0.

7.7. Операции сравнения

Инструментарий можно увидеть в каталоге:

Page 67: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Оператор Функция Описание

A < B lt(A,B) A меньше, чем B.

A <= B le(A,B) A меньше или равно B.

A > B gt(A,B) A больше, чем B.

A .>= B ge(A,B) A больше или равно B.

A == B eq(A,B) A равно B.

A ~= B ne(A,B) A не равно B.

7.8. Операции установки

Инструментарий можно увидеть в каталоге:

В программах для завершения работы и возврата в точку вызова используется оператор return.

Page 68: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

7.9. Операции дата-время

Инструментарий можно увидеть в каталоге:

MATLAB представляет информацию о датах и времени в трех форматах:

Формат Описание

Data Strings Строки дат. Вы можете выбрать один из множества стилей представления даты. Например: 31-Oct-2004 15:45:17. День-месяц-год Часы:Минуты:Секунды. 10/31/03. День/Месяц/Год.

Serial Data Numbers

Последовательные числа для даты и времени. Это время, прошедшее со стартовой даты (в MATLAB это 1 января 0000 года). В нем дата – это целая часть (число суток), время – дробная часть (от суток).

Data Vector Внутреннее представление даты. Это вектор, содержащий год, месяц, день, часы, минуты, секунды.

Для преобразования форматов дат предназначены функции:

Функция Описание

datenum Возвращает последовательные числа для даты и времени.

datestr Возвращает строки для дат. Есть возможность выбора одного из 19 стилей отображения даты.

datevec Возвращает вектор даты.

Page 69: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Для получения текущих значений даты и времени предназначены функции:

Функция Описание

date Возвращает строку с текущей датой.

now Возвращает последовательное число для текущей даты и времени.

7.10. Программирование в MATLAB

Функции программирования можно посмотреть в браузере функций в каталоге Programming in MATLAB.

Определены категории

Functions and Scripts Функции и сценарии

Evaluation Вычисления

Timer Таймер

Variables and Functions in Memory Переменные и функции в памяти

Control Flow Поток управления

Error Handling Отслеживание ошибки

MEX Programming Программирование MEX

7.10.1. Функции и сценарии

В MATLAB определены два типа М-файлов:

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

Функции. Используются для создания своих собственных функций. Могут получать входные аргументы, возвращают результаты. Сохраняют переменные в рабочей области, выделенной под функцию, из внешнего мира они не доступны.

Page 70: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

М-файл функции должен иметь особую внутреннюю структуру:

Первая строка – определение функции

function [Вектор возвращаемых значений] = ИмяФункции(аргументы)

Строки кода функции

Подфункции, если есть Описываются аналогично основной функции. В коде основной функции подфункции могут употребляться.

7.10.2. Вычисления

Выражения в MATLAB задают правила нахождения значения, которое присваивается переменной. Оператор присвоения в MATLAB имеет формат: <Имя переменной> = <Выражение>.

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

При работе в командной строке имя переменной может пропускаться. Тогда значение выражения присваивается служебной переменной с именем ans (ответ).

В MATLAB определены типы выражений:

На языке MATLAB.

Строковые.

С использованием функций на языках С и Фортран.

Строковые выражения позволяют задать выражение в виде строки, которая за кулисами преобразуется в выражение и исполняется. Для этого используется функция eval(‘строка с выражением’). Например, eval('t = clock') содержит строку с оператором присвоения переменной t значения текущего времени, возвращаемое функцией clock.

Приоритеты. При использовании в выражениях операторы выполняются с установленным приоритетом. Операции одинакового уровня исполняются в порядке слева направо. Старшинство операций определяется уровнями:

1. Круглые скобки ( ). 2. Транспонирование массива (.'), возведение массива в степень (.^),

транспонирование ('), возведение матрицы в степень(^). 3. Унарный плюс (+), унарный минус (-), логическое «НЕ» (~).

Page 71: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

4. Умножение массивов (.*), правое деление массивов (./), левое деление массивов (.\), умножение матриц (*), правое деление матриц (/), левое деление матриц (\).

5. Сложение (+), sвычитание (-). 6. Вертикальное двоеточие (:). 7. Меньше чем (<), меньше чем или равно (<=), большечем (>), больше чем

или равно (>=), равно (==), не равно (~=). 8. Поэлементное «И» (&). 9. поэлементное «ИЛИ» (|).

7.10.3. MATLAB – суперкалькулятор

В командном окне можно производить вычисления, как на калькуляторе. Порядок действий:

После символа приглашения >> ввести выражение.

При необходимости запрета вывода результата ввести знак – точка с запятой (;). Это целесообразно при выполнении многих вычислений подряд, когда промежуточные значения не требуются.

Завершить ввод клавишей <Enter>.

MATLAB выведет результат с именем по умолчанию ans.

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

В MATLAB предусмотрены три категории операторов:

Арифметические. Используются с численными данными.

Условные. Используются для сравнения.

Логические. Осуществляют операции над данными логического типа.

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

Оператор Функция Описание

unique(A) Уникальные элементы. Множество со значениями А без повторений.

ismember(A,B) Вектор с длиной А, который содержит 1 в позициях элементов А, имеющихся в В.

Page 72: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

union(A,B) Объединение. Множество со значениямиА и В без повторений.

setdiff(A,B) Вычитание. Множество значений в А, которых нет в В.

intersect(A,B) Пересечение. Множество из общих элементов A, B.

7.10.4. Переменные и функции в памяти

Переменная имеет имя, связанное с данными в памяти. Требования к имени:

Длина произвольная, но значимы первые N символов (по умолчанию 64).

Символы – буквы латиницы, арабские цифры, символ подчеркивания.

Начало – буква.

Высота букв имеет значение.

Имя должно быть уникальным.

Переменные могут быть трех типов:

Local (локальные). Каждая функция MATLAB может иметь свои внутренние переменные. Они не сохраняются в рабочей области после завершения функции.

Global (глобальные). Это переменные, используемые разными функциями. Их значения сохраняются в рабочей области.

Persistent (сохраняемые). Это переменные, предназначенные для обмена между функциями. Их можно использовать только в М-файлах функций. Их значения сохраняются в рабочей области, но прямо не доступны. Чтобы сделать переменную этого типа нужно использовать операцию persistent <имя функции>.

7.10.5. Поток управления

Для управления программой предусмотрены операторы. Они записываются строками, признаком конца оператора является слово end. Есть 4 категории операторов:

Условные.

Цикла.

Управления ошибками.

Завершение программы.

Оператор Формат

ifor (Для) for index =

Page 73: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

В цикле от начального значения переменной index до конечного с заданным шагом выполняются операторы цикла. Это цикл с заданным числом повторений.

<Начало>:<Шаг>:<Конец> <Операторы> end

while (Пока) Пока условие выполняется операторы цикла отрабатываются.. Это цикл с неизвестным числом повторений. Чтобы цикл завершился, операторы должны приводит к нарушению условия.

while <условие> <Операторы> end

continue Применяется в операторах циклах для досрочного завершения итерации цикла (когда продолжение не дает ничего полезного) и перехода к началу цикла.

break Применяется в операторах циклах для досрочного завершения wbrkf цикла (когда продолжение не дает ничего полезного).

Оператор Формат

try (Попробуем) catch (Схватить) Между try и catch размещаются последовательно исполняемые операторы. Если происходит ошибка, то управление передается фразе catch. Если ошибок не было, то фраза catch пропускается.

try <Оператор> ....... <Оператор> catch <Оператор> ....... <Оператор> end

if (Если) При выполнении условия группа операторов исполняется, в противном случае она пропускается.

if <условие> <Операторы> end

if с фразой else (Иначе) При выполнении условия исполняется группа операторов 1. В противном случае исполняется группа операторов 2, входящая во фразу else.

if < условие > <Операторы 1> else <Операторы 2> end

Page 74: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

if с фразой elseif (Иначе если) При выполнении условия 1 исполняется группа операторов 1. В противном случае при выполнении условия 2 исполняется группа операторов 2, входящая во фразу elseif.

if < условие 1> <Операторы 1> elseif < условие 2> <Операторы 2> end

switch (Переключить) с фразами case (Селектор), их число не ограничено, otherwise (Иначе) По выражению вычисляется значение селектора для выбора исполняемых операторов. Каждому значению селектора соответствует своя группа операторов. Если вычисленному селектору нет группы операторов, то исполняются операторы фразы otherwise. Оператор применяется для множественного ветвления.

switch <выражение> case <значение 1> <Операторы 1> case <значение 2> <Операторы 2> ......................... case <значение N> <Операторы N> otherwise <Операторы> end

7.10.6. Редактор/Отладчик (Editor/Debugger)

Программирование М-файлов.Для создания М-файла нужно его запрограммировать. Это можно сделать двумя способами:

В любом текстовом редакторе.

Во встроенном редакторе MATLAB. Рекомендуется использовать этот способ, так как этот редактор обеспечивает визуальную поддержку программирования, а также совмещен с отладчиком.

При исполнении М-файла интерпретатор MATLAB сначала преобразует его в промежуточный псевдокод, вызывая функцию pcode, которая создает файл с тем же именем, но с расширением (.p). Если этот файл сохранить, то при запуске М-файла будет исполняться он. Для скрытия содержимого М-файла можно после сохранения файла псевдокода М-файл удалить.

В М-файл можно добавить справку в виде строк комментария.

Это инструмент для создания, редактирования и отладки M-файлов на языке MATLAB. Вызов редактора:

edit в командной строке,

Page 75: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

File => New => script из меню.

File => New => function из меню.

Команда File => New => script приводит к появлению окна редактора. Новый файл имеет по умолчанию имя: Untitled - Безымянный.

Команда File => New => function из меню вызывает редактор в режиме создания функции. В редактор заносится шаблон кода функции.

Новый файл имеет по умолчанию имя: Untitled - Безымянный. Рекомендуются семантические имена.

Для работы с ним файл надо сохранить под уникальным именем. Для сохраненного файла доступна команда исполнения run. После сохранения файла в заголовке появится путь к нему.

В окне редактора находятся:

Стандартная строка заголовка.

Меню. Справа в строке меню находятся кнопки включения или выключения докирования, а также кнопка закрытия M-файла. Редактор может работать одновременно с несколькими М-файлами.

Панель инструментов. По умолчанию выводится основная панель. Если режим работы редактора изменен, то добавляются нужные панели.

Page 76: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Рабочее поле. В нем имеются две колонки – первая с номерами строк кода, вторая для размещения меток точек останова. В рабочем поле вводятся коды команд. Редактор обеспечивает цветовое выделение фрагментов кода (комментарий, строки и др.).Полоска документов (в нижней части окна). В ней кнопки быстрого выбора нужного файла..

Статусная строка. В ней отображаются тип М-файла (script – сценарий или имя функции), позиция курсора (Ln – номер строки, Col – номер столбца).

Пункт File (Файл).

New Новый

Open... Открыть...

Page 77: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Open as text Открыть как текст

Open Selection Открыть выделенное

Close Editor Закрыть редактор

Close Закрыть файл

Save Сохранить...

Save As... Сохранить как...

Save All Сохранить все

Save Backup... Сохранить предыдущие версии...

Save File and Publish Сохранить файл и публикацию

Publish Configuration Публикация в HTML...

Source Control Управление другим кодом

Import Data... Импорт данных

Save Workspace As,,, Сохранить рабочую область

Set Path Установить путь

Preferances Предпочтения

Page Setup Установка страницы

Print Печать

Print Selection Печать выделенного

Ссылки на М-файлы

Exit MATLAB Выход из MATLAB

Редактор использует много параметров по умолчанию. Их можно изменить командой «Предпочтения», которая выводит окно параметров с выделением параметров для редактора/отладчика. В окне можно выбрать:

Редактор, по умолчанию встроенный редактор MATLAB.

Длину списка последних файлов, по умолчанию 4.

Флаги правил открытия файлов.

Флаги правил автоматического изменения файлов.

Изменять эти параметры нецелесообразно.

Пункт Edit (Правка)

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

Синтаксис Цвет

Ключевые слова языка Синий

Операторы, константы, переменные Черный

Открытая строка Фиолетовый

Page 78: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Закрытая строка Пурпурный

Системные команды Коричневый

Комментарий после знака % Зеленый

Ошибки Красный

Для цветового выделения фрагмента внутри пары скобок применяется команда Balance Delimeters (Баланс ограничителей). Если курсор установлен в любом месте внутри пары скобок (круглых, квадратных или фигурных), то эта команда приводит к цветовому выделению инверсным цветом содержимого скобок.

Undo Отменить

Redo Повторить

Cut Вырезать

Copy Копировать в буфер

Paste Вставить из буфера

Paste to Workspace Поместить в рабочую область

Select All Выделить все

Find and Replace Найти и заменить

Find Next Найти дальше

Page 79: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Find Previous Найти раньше

Find Selection Найти выделенное

Find Files Поиск файлов

Clear Command Window Очистить командное окнр

Clear Command History Очистить окно истории команд

Clear Workspace Очистить рабочую область

Пункт Text (Текст)

Evaluate Selection Вычислить выделенное

Wrap Comments Сделать ккомментарием

Comment Создать комментарий

Uncomment Отменить комментарий

Decrease Indent Уменьшить отступ

Increase Indent Увеличить отступ

Smart Indent Гибкий отступ

Для ввода текстовых пояснений применяются комментарии, которые интерпретатор игнорирует. Комментарий начинается со знака ( % ). Комментарий выделяется цветом (зеленый). Допустимы комментарии в конце строки. Строки текста можно превращать в комментарий и обратно с помощью команд:

Comment Сделать комментарием. В начало строки добавляется символ %.

Uncomment Отменить комментарий. В начале строки удаляется символ %.

Page 80: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Для иерархического позиционирования операторов, таких как циклы, вложенные операторы и др. применяются отступы. Для работы с ними предусмотрены команды:

Команда Действие

Decrease indent Уменьшить отступ, удаляется символ табуляции.

Increase indent Увеличить отступ, добавляется символ табуляции.

Smart indent Отступ автоматический по контексту.

Пункт Go (Перейти)

Back Назад

Forward Вперед

Set/Clear Backmark Установить/Удалить закладку

Next Backmark Следующая точка закладку

Previous Backmark Предыдущая закладка

Go To Отменить комментарий

Пункт Cell (Ячейка)

Пункт содержит команды работы с массивами ячеек. Перед их использованием нужно исполнить первую команду пункта – включение режима редактирования ячеек.

Page 81: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Disables Cell Mode Переключить режим массива ячеек

Evaluate Current Cell Вычислить текущую ячейку

Evaluate Current Cell and Advance Вычислить текущую ячейку полно

Evaluate Entre File Вычислить весь файл

Insert Cell Brake Ввести разделитель ячеек

Insert Cell Brake Around Selection Ввести разделитель ячеек для выделения

Insert Text Markup Ввести разметку текста

Next Cell Следующая ячейка

Previous Cell Предыдущая ячейка

Пункт Tools (Инструменты)

Code Analysis Анализатор кода

Show Dependency Report Показать отчет о зависимостях

Page 82: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Open Profilier Открыть профилировщик

Compare Against Version on Disk Сравнить с версией на диске

Save and Compare Against Сравнить с версией по выбору

Compare Against Version on Disk Ввести разделитель ячеек для выделения

Fixed-Point Toolbox Функция из Fixed-Point Toolbox

Пункт Debug (Отладка)

Перед отладкой файл нужно сохранить, чтобы зафиксировать сделанные в нем изменения. Точки останова можно вводить после сохранения файла. Перечень доступных команд зависит от режима работы редактора.

Open File when Debugging Открыть файл для отладки

Step Шаг вперед

Step In Шаг с заходом в подпрограмму

Step Out Подпрограмма за 1 шаг

Save File and Run Сохранить файл и запуск

Run Configuration Запуск под конфигурацией

Set/Clear Breakpoint Установить/Удалить точку останова

Set/Modify Conditional Breakpoint... Установить/Изменить точки останова с условиями...

Enable/Disable Breakpoint Разрешить/Запретить точки останова

Clear Breakpoints in All Files Удалить точки останова во всех файлах

Stop if Error/Warning Стор при ошибке или предупреждении

Page 83: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Exit Debug Mode Закрыть режим отладки

Команды трассировки доступны только при наличии точек останова.

Команда Stop if Error/Warning выводит диалоговое окно с 4 вкладками для задания правил реагирования на:

Errors – ошибки.

Try/Catch – ошибки в операторе пробы.

Warnings - предупреждения.

Nah or Inf – нечисло или бесконечность.

Пункт Desktop (Рабочий стол)

Dock Editor Докировать окно редактора в рабочий стол MATLAB

Undock Отменить докирование

More Увеличить докированное окно

Reduce Уменьшить докированное окно

Editor Toolbar Флаг установки панели инструментов

Editor Cell Mode Toolbar Флаг установки панели инструментов режима ячеек

Document Bar Полоска документов

Пункт Window (Окно)

Содержит команды изменения окна редактора.

Page 84: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Tile Выбрать размещение окон, закрашивая области в решетке

Left/Right Split Размещение слева/справа

Top/Bottom Split Размещение сверху/снизу

Float Каскадное размещение

Minimize Максимизация, один документ в окне

Cascade Editor Documents Каскадные документы

Minimize Editor Documents Минимизация документов, не отображать ни одного

Close All Documents Закрыть все документы

Next Tool Следующий инструмент

Previous Tool Предыдущий инструмент

Next Tab Следующая таблица

Previous Tab Предыдущая таблица

Список окон

Page 85: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Пункт Help (Справка)

Содержит команды доступа к справке по редактору MATLAB.

7.10.7. Программирование MEX

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

<matlabroot>\bin\win32. <matlabroot> - корневая папка MATLAB.

Компилятор преобразует файлы, созданные в MATLAB, в нужный продукт с тем же именем следующими командами:

Что получаем Как Комментарий

Автономное приложение .exe

mcc –m myfile.m –m задает создание из myfile.m файла приложения myfile.exe.

Разделяемая библиотека .dll

mcc –l myfile.m

Библиотека подключается потребителями, когда нужна. –l задает создание из myfile.m файла DLL myfile.dll.

Драйвер библиотеки .lib (Windows) .so

mbuild myfile.c myfile.lib mbuild myfile.c

Библиотека подключается драйвером и доступна всегда. создать из myfile.c файл myfile.lib. создать из myfile.c файл myfile.so.

Page 86: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

(Linux) myfile.lib

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

Это интерпретатор, выполняет команды построчно.

Поддерживаются импорт и экспорт многих типов данных, объектно-ориентированное программирование, интерфейс с внешними технологиями (COM, Java, C, Fortran), работа с устройствами последовательного порта ввода/вывода.

Возможны два способа программирования:

Работа в режиме суперкалькулятора в командном окне.

Создание M-файла с последующим исполнением.

Любая операция в MATLAB завершается занесением результата в рабочую область и его выводом в командное окно. Вывод в командное окно можно заблокировать, разместив после операции знак точка с запятой ( ; ).

В строке можно указать несколько операций, разделяя их знаками запятых ( , ). Если строка очень длинная, ее можно разместить в нескольких строках, завершая каждую знаком продолжения из трех или более точек (...).

7.11. ООП

Функции работы с объектами можно посмотреть в браузере функций в каталоге Object-Oriented Programming.

Определены категории:

Page 87: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Classes and Objects Классы и объекты

Handle Classes Классы дескрипторов

Events and Listeners События и слушатели

Meta-classes Мета классы

Enumerations Перечисления

Page 88: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8. Графика

8.1. Функции графики

Их можно посмотреть в браузере функций в каталоге Graphics

Определены категории:

Basic Plots and Graphs Основные рисунки и графики

Plotting Tools Инструменты рисования

Annotating Plotting Оформление рисунка

Specialized Plotting Специальное рисование

Bit-Mapped Images Точечная графика

8.2. Анатомия графики

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

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

Доступ ко всем командам и инструментальным средствам можно получить, используя меню объекта Figure. Для быстрого выбора наиболее часто используемых команд имеются также панели инструментов и интерактивные средства редактирования.

Page 89: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Окно объекта Figure имеет стандартный формат Windows и содержит:

Заголовок с именем окна.

Меню.

Инструментальные панели с кнопками быстрого доступа к часто исполняемым командам.

Рабочее поле, в котором располагаются используемые объекты. Например, на рисунке показан встроенный объект Axes (Оси), в котором рисуются графики функций.

Пользователь может вводить в объект дополнительные компоненты.

8.2.1. Пункт File (Файл)

Содержит команды работы с файлами применительно к графике. Многие команды подобны стандартным командам работы с файлами операционной системы Windows.

Page 90: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.2.2. Пункт Edit (Правка)

Содержит команды редактирования применительно к графике. Подобны стандартным командам редактирования Windows.

Page 91: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.2.3. Пункт View (Вид)

Содержит команды видимости применительно к графике.

Page 92: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.2.4. Пункт Insert (Вставить)

Содержит команды вставки объектов графики.

Page 93: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.2.5. Пункт Tools (Инструменты)

Содержит команды работы с объектами графики.

Page 94: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В
Page 95: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.2.6. Пункт Desktop (Рабочий стол)

Добавляет команду докирования объекта Figure на рабочий стол MATLAB в панель инструментов.

Практически не применяется, так как на рабочем столе места мало.

8.2.7. Пункт Window (Окно)

Содержит перечень используемых окон. Обычно это:

командное окно, куда выводятся сообщения о возможных ошибках,

объект Figure,

редактор М-файла, если он используется.

Page 96: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.2.8. Пункт Help (Справка)

Содержит команды доступа к справке по графике в MATLAB.

8.3. Инструменты рисования

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

В MATLAB графики отображаются в автономных окнах, которые называются Figure. Количество одновременно используемых графических окон не ограничено.

Page 97: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

MATLAB имеет графику разного уровня:

Графика низкого уровня работает напрямую с объектами дескрипторной графики (например, линиями).

Графика высокого уровня осуществляет дополнительные сервисные действия, улучшающие визуализацию и упрощающие работу (например, автоматический выбор цвета и стиля). Она обращается к операциям графики низкого уровня за кулисами. Обычно используется графика высокого уровня.

Графическое окно в MATLAB имеет два назначения:

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

Окно строится из объектов, которые образуют иерархическую структуру:

Root - Корень дерева объектов графики (экран компьютера).

Figure Графическое окно.

Uipanel Панель пользовательского интерфейса. Uimenu Меню пользователя. Uicontextmenu Контекстное меню пользователя. Uicontrol Управление интерфейсом пользователя.

Axes Оси (X,Y или X,Y,Z). В объекте Figure их может быть несколько, как подокна. Text Текст. Line Линия. Rectangle Прямоугольник. Patch Закраска. Surface Поверхность. Light Подсветка. Невидимый объект, видны только его

действия. Image Картинка.

Внимание! Имена объектов в документации MATLAB начинают с заглавной буквы. Функции же всегда пишутся строчными буквами. Например:

Figure – имя объекта,

figure – имя функции, создающей объект Figure.

8.3.1. Свойства графических объектов

Для создания графического окна используется функция figure(N), N – номер окна, нумерация с 1. Функции рисования высокого уровня создают Figure с очередным номером автоматически.

Page 98: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Объект Figure включает в себя объекты, свойства которых можно изменять программно в М-файле или интерактивно с использованием встроенного редактора свойств.

Свойства любого графического объекта можно задавать:

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

Любые с помощью функции set.

Любые интерактивным редактированием в редакторе свойств.

8.3.2. Объект Figure (Графическое окно)

Основные свойства:

Name (Имя). По умолчанию это Figure <номер окна>.

Color. Цвет фона рабочего поля. По молчанию серый.

NextPlot. Следующий график. Возможные значения:

New (новый). Новый график создается в новом окне.

Add (добавить). Новый график рисуется в том же окне с сохранением предыдущих. Команды рисования высокого уровня при этом каждый новый график отображают цветом из списка в 6 цветов.

Replace (заменить). Новый график рисуется в том же окне с заменой имеющихся.

8.3.3. Объект Axes (Координатные оси)

Основные свойства перечислены в таблице. Свойства и функции, индивидуальные для осей X, Y и Z, в имени имеют префикс оси (в таблице показаны свойства для оси X).

Группа Свойство Назначение

Оси Title Заголовок. Это текст, располагающийся над объектом Axes. Он может содержать и результаты вычислений. Формируется функцией title. Используемый по умолчанию шрифт Helvetica не поддерживает кириллицу, подходит шрифт AG_Helvetica.

Box Коробка. Обрамляющий параллелепипед для 3D объекта.

Colors Цвет фона.

Color Цвет текста.

Page 99: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Линии LineStyleOrder Порядок чередования стилей.

LineWidth Толщина.

Шрифт Аналогично объекту Text.

Сетка XGrid Крупная масштабная сетка, включена/выключена.

XMinorGrid Мелкая масштабная сетка, включена/выключена.

XAxisLocation Положение оси, свои варианты для разных осей.

XLabel Заголовок оси. Это текст, располагающийся вдоль оси. Он может содержать и результаты вычислений. Формируется функцией xlabel. Не все шрифты допускают кириллицу и вертикально размещение. Используемый по умолчанию шрифт Helvetica не поддерживает кириллицу, подходит шрифт AG_Helvetica.

GridLineStyle Стиль линий координатной сетки.

XLim Пределы изменения, вектор со значениями минимума и максимума.

XScale Масштаб: linear (линейный), log (логарифмический по основанию 10).

XTick Масштабные метки. Вектор меток, отображаемых вдоль оси.

XColor Цвет.

8.3.4. Объект Text (Текст)

Текстовые области используются как: Заголовки объектов Axes. Названия осей в объекте Axes. Пояснения на графиках.

Основные свойства:

Группа Свойство Назначение

Текст String Строка текста. Формируется программно, может включать результаты вычислений. Формируется разными функциями в зависимости от места расположения текста.

BackgroundColor Цвет фона.

Color Цвет текста

Линии LineStyle Стиль линии.

LineWidth Толщина.

Шрифт FontName Имя.

FontSize Размер.

FontAngle Наклон: normal (нормальный), italic (курсив),

Page 100: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

oblique (облегающий).

FontWeigt Толщина: тонкий (light), normal (нормальный), demi (утолщенный), bold (жирный).

FontUnits Единица измерения: inches (дюймы), centim (сантиметры), normalized points (нормализованные точки), pixels (пиксели).

Rotation Поворот в градусах.

8.3.5. Объект LineSeries (Набор линий)

В объекте Axes могут быть несколько графиков. Для каждого определены основные свойства:

Группа Свойство Значение

Линия LineStyle Стиль

LineStyleOrder Чередование цветов, определяет цвета для последовательно рисуемых линий

LineWidth Толщина

Цвет Color. Цвет

ColorOrder Чередование цветов, определяет цвета для последовательно рисуемых линий

Маркер Marker Знак

MarkerSize Размер

MarkerEdgeColor Цвет контура маркера

MarkerFaceColor Цвет заливки маркера

Данные XDataSource Источник данных для X

YDataSource Источник данных для Y

ZDataSource Источник данных для Z

Свойства линий передаются в функции рисования с помощью LineSpec (спецификатор линий). LineSpec – это строка символов, каждый из которых однозначно определяет свойство. Символы вводятся в строку в любом порядке без пробелов или с ними, высота букв значения не имеет.

Спецификаторы цвета

R G B Кратко Полно Цвет

[1 1 0] y yellow желтый

[1 0 1] m magenta фиолетовый

[0 1 1] c cyan голубой

[1 0 0] r red красный

[0 1 0] g green зеленый

[0 0 1] b blue синий

Page 101: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

[1 1 1] w white белый

[0 0 0] k black черный

[z z z] Для произвольного цвета z = 0…1.

Спецификаторы стиля линии

Символы Стиль линии

- Тире (по умолчанию)

Сплошная

: Вертикальное двоеточие

Двойной пунктир

-. Тире + точка Штрих-пунктир

-- Тире + Тире Штриховая

Спецификаторы знака маркера

Коротко Полно Название Коротко Полно Название

+ плюс ^ треугольник вверх

o окружность v треугольник вниз

* звездочка > треугольник вправо

. точка < треугольник влево

x крест p pentagram пятиугольник

s square квадрат h hexagram шестиугольник

d diamond ромб none нет (по умолчанию)

8.4. Функции рисования высокого уровня

Эти функции осуществляют:

Создание объекта Figure с очередным номером (если его нет).

Создание объектов Axes в объекте Figure.

Масштабирование данных по осям.

Рисование графиков в объекте Axes.

Функции при исполнении вызывают графические функции низкого уровня.

Созданный рисунок затем может интерактивно редактироваться встроенным редактором.

Функция subplot применяется для создания в объекте Figure подокон. Вывод графиков в подокнах применяется для одновременного наблюдения связанных графиков без наложения друг на друга.

Действия функции зависят от способа записи. Варианты синтаксиса:

Page 102: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

subplot(m,n,p). Создает в текущем объекте figure объект axes в панели c номером p из матрицы из m строк и n столбцов. Дальнейшие действия касаются этого объекта axes. Если p – вектор, то он задает номера создаваемых в объекте figure объектов axes

subplot(m,n,p,’replace’). Если в объекте figure указываемые объекты axes существует, то они заменяются на новые.

h=subplot(...). Возвращает дескриптор нового объекта axes. На него затем можно ссылаться.

8.5. Графика 2D

8.5.1. Перечень функций

Функция Тип графика

plot Линейный масштаб.

plotyy Две функции с разными масштабами. Оси y слева и справа.

loglog Логарифмические масштабы по осям х и у.

semilogx Логарифмический масштаб по оси х.

semilogy Логарифмический масштаб по оси y.

bar Столбцовая диаграмма вертикальная.

barh Столбцовая диаграмма горизонтальная.

hist Гистограмма.

stairs Ступеньки.

errorbar С зонами погрешностей.

stem Дискретные отсчеты.

polar В полярной системе координат.

rose Угловые гистограммы.

compass Векторы.

feather Векторы комплексных чисел.

contour Контурные.

quiver Поля градиентов.

fill Закрашенный многоугольник для 2D объектов.

patch Закрашенный многоугольник для 2D и 3D объектов.

pie Круговая диаграмма.

8.5.2. Функция plot (график)

Функция plot используется с разными аргументами.

plot(Y). Аргумент – матрица Y, которая должна быть определена до построения графика. Рисует одну линию для каждого столбца матрицы Y. Ось

Page 103: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

х помечается индексным вектором 1:m, где m – число строк в Y. Если Y – вектор, то линия одна. В примере для формирования матрицы используется стандартная функция peaks, которая генерирует матрицу для поверхности со сложным рельефом. Индекс нумеруется от 1.

Y=peaks; % Матрица plot(Y) % График title(‘plot(Y)’) % Заголовок grid on % Включить сетку

plot(x1,y1,s1,x2,y2,s2,…). Аргументы – один или несколько списков. Для каждого списка рисуется одна линия. В список в заданной последовательности входят – независимая переменная x, функция y, строка признаков s).

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

В примере рисуются три подокна:

Page 104: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Подокно 1 содержит один график. Переменная х в plot пропущена. Поэтому по оси х отложены индексы.

Подокно 2 содержит два графика. Переменная х в plot указана. Поэтому по оси х отложены значения.

Подокно 3 содержит два графика. В plot использованы строки признаков, которые для каждого графика задают стиль, цвет, знак маркера.

x=0:0.1:10;0 % Аргумент x y1=sin(x) % Функция y1 y2=cos(x) % Функция y2 subplot(2,2,1) % Подокно 1 plot(y1) % График 1 grid on % Включить сетку title(‘plot(...,y)’) % Заголовок 1 subplot(2,2,2) % Подокно 2 plot(x,y1,x,y2); % График 2 grid on % Включить сетку title(‘plot(x,y)’) % Заголовок 2 subplot(2,2,3) % Подокно 3 plot(x,y1,'p r -',x,y2,'g o --') % График 3 grid on % Включить сетку title(‘plot(x,y,...)’) % Заголовок 3

Page 105: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.3. Функция plotyy (график, две оси у)

Функция plotyy(x1,y1,x2,y2) используется для отображения в одном окне графиков двух функций с различными масштабами. Для первой функции ось у отображается слева, для второй справа. Для визуализации графики и ось y каждой функции отображаются одним и тем же цветом.

x=0:0.2:20; % Аргумент x y1=sin(x) % Функция 1 y2=2*cos(x) % Функция 2 plotyy(x,y1,x,y2) % Графики grid on % Включить сетку title(‘plotyy’) % Заголовок

8.5.4. Функции, логарифмический масштаб

Функции с логарифмическим масштабом по основанию 10 применяются, когда значения переменных имеют очень большой диапазон. Определены 3 функции:

loglog - по осям х и у,

semilogx - только по оси х,

semilogy - только по оси y.

В примере рисуются три подокна:

Page 106: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Подокно 1. Функция loglog – логарифмический масштаб по осям х и у.

Подокно 2. Функция semilogx - логарифмический масштаб только по оси х.

Подокно 3. Функция semilogy - логарифмический масштаб только по оси y x=0:0.2:10; % Аргумент x y1=exp(x)./(x+1); % Функция subplot(2,2,1) % Подокно 1 loglog(x,y1) % График 1 grid on % Включить сетку title(‘loglog’) % Заголовок 1 subplot(2,2,2) % Подокно 2 semilogx(x,y1) % График 2 grid on % Включить сетку title(‘semilogx’) % Заголовок 2 subplot(2,2,3) % Подокно 3 semilogy(x,y1) % График 3 grid on % Включить сетку title(‘semilogy’) % Заголовок 3

Page 107: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.5. Функции bar и barh (столбцовые диаграммы)

Эти функции отображают данные в виде столбцов:

bar - вертикальных,

barh - горизонтальных.

В примере создаются два подокна, в левом использована функция bar, в правом barh.

x = -2.9:0.2:2.9; % Аргумент х Y= exp(-x.*x) % Функция Y subplot(1,2,1) % Подокно 1 bar(Y) % Графика grid on % Включить сетку subplot(1,2,2) % Подокно 2 barh(Y) % Графика grid on % Включить сетку

Page 108: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.6. Функция hist (гистограмма)

Функция hist(y,x) – столбцовая диаграмма, показывающая число попаданий случайных у в заданный интервал х.

x = -3:0.2:3; % Вектор х y= randn(1000,1) % Случайные у hist(y,x) % Гистограмма grid on % Включить сетку

8.5.7. Функция stairs (ступеньки)

Функция stairs отображает график по вычисленным значениям в ступенчатой форме. Между вычисленными точками рисуется горизонтальная линия.

x = -3:0.2:3; % Вектор х stairs(x,x.^2) % График grid on % Включить сетку

Page 109: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.8. Функция errorbar (с зонами погрешности)

Функция errorbar(x,y,e) рисует график с зонами погрешности. Линия е использует линию y, как ось. Зоны погрешности отображаются в вычисляемых точках и имеют вид вертикальных полосок с горизонтальными ограничителями в обе стороны линии y c высотой, равной модулю e. В примере для пояснения действия функции errorbar в одном окне сначала рисуются исходные функции (y, e), а затем добавляется errorbar.

x = -2*pi:pi/8:2*pi; % Вектор х y=sin(x) % Функция y е=cos(x)./4 % Функция e plot(x,y,x,e) % График hold on % Сохранить график errorbar(x,y,e) % Функция errorbar grid on % Включить сетку

Page 110: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.9. Функция stem (дискретные отсчеты)

Функция stem отображает значения в виде столбиков, на вершине которых имеется маркер. Отображается и нулевая линия.

x=0:0.1:4 % Аргумент х y=sin(x.^2).*exp(-x) % Функция у stem(x,y) % График grid on % Включить сетку

Page 111: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.10. Функция polar (полярные координаты)

polar(угол, модуль) - рисует траекторию конца вектора, задаваемого модулем и углом.

x=0:pi/50:2*pi % Угол polar(x,sin(5*x)) % График

Page 112: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.11. Функция rose (угловые гистограммы)

Функция rose(x,n) рисует угловую гистограмму х для n интервалов. Если n пропущено, то по умолчанию n=20.

x – вектор,

n – число интервалов. rose(1:100),12 % График

Page 113: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.12. Функция compass (комплексные векторы)

Функция compass(z) рисует векторы комплексных чисел в полярных координатах. Каждый вектор характеризуется длиной и углом наклона. Последовательность векторов в массиве не видна.

Z=[-1+2i,-2-3i,2+3i,5+2i] % Векторы compass(Z) % График

Page 114: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.13. Функция feather (комплексные векторы)

Функция feather(z) рисует векторы комплексных чисел в декартовых координатах. Векторы отображаются исходящими из равноудаленных по оси х точек. Каждый вектор характеризуется длиной и углом наклона. Векторы в массиве отображаются последовательно.

x=0:pi/4:2*pi % Задать переменную х z=exp(x*i) % Комплексная функция feather(z) % Ее радиус-векторы

Page 115: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.14. Функция contour (контур)

Функция contour(z) строит для матрицы z контурные линии. Каждый контур соответствует фиксированному значению z. В примере для пояснений использованы два подокна:

в левом отображена поверхность для матрицы,

в правом контурный график. [x,y]=meshgrid(-2:0.2:2,-2:0.2:3) % Задать сетку x и y z=x.*exp(-x.^2-y.^2) % Получить матрицу z subplot (1,2,1) % Создать подрисунок surf(z) % График матрицы subplot (1,2,2) % Создать подрисунок contour(x,y,z) % Контурный график grid on. % Включить сетку

Page 116: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.15. Функция quiver (поля градиентов)

Функция quiver(x,y,px,py,M) рисует векторы градиента z(x,y). Вектор градиента (изменения) отображается стрелкой, которая характеризует его величину и направление. Аргументы функции:

x,y – аргументы функции z(x,y),

px,py – проекции градиента на оси x,y,

M – масштабный коэффициент. [x,y]=meshgrid(-2:0.2:2,-1:0.2:1) % Задать сетку х и у z=x.*exp(-x.^2-y.^2) % Расчет z(x,y) [px,py]=gradient(z,0.2,0.2) % Градиенты quiver(x,y,px,py,2) % График

Page 117: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.5.16. Функции закрашивания

Используются для закрашивания областей. Вводимые области размещаются поверх имеющихся. Определены функции:

fill(x,y,’цвет’). Это функция, которую можно использовать только для 2D объектов.

patch(x,y,’цвет’). Это универсальная функция, которую можно использовать для 2D и 3D объектов. Результат для 2D объекта аналогичен функции fill.

Аргументы функций:

x, y - векторы координат вершин, Размерность должна быть одинаковой

‘цвет’ - цвет закраски.

В примере рисуются две закрашенные области, первая использует fill, вторая - patch.

x1=[1 2 3 2] % Вектор х1 y1=[0 2 0 4] % Вектор у1 x2=[0 1 3] % Вектор х2 y2=[1 4 2] % Вектор у2

Page 118: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

fill(x1,y1,’r’) % Многоугольник 1. patch(x2,y2,’g’) % Многоугольник 2 grid on % Включить сетку

8.5.17. Функция pie (круговая диаграмма)

Функция pie(x,[вектор выступов]) - рисует нормализованную круговую диаграмму для вектора х. Диаграмма для каждого x содержит сектор, угловой размер которого определяется значением x/sum(x). Рядом с сектором выводится размер в процентах. Для визуального выделения любому сектору можно задать выступ. Аргументы функции:

x -- вектор значений,

[вектор выступов] – определяет размер выступа. Если 0, то выступа нет. x=[1 2 3 4 5] % Задать вектор pie(x,[0 2 0 0 1]) % График

Page 119: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.6. Графика 3D

8.6.1. Перечень функций

plot3 Фигура в аксонометрии

mesh Сетка с окраской линий цветами по значению функции.

meshc Сетка с окраской линий с проекцией в виде контурного графика.

meshz Сетка с окраской линий и столбцы.

surf Сетка с окраской поверхности цветами по значению функции.

surfc Сетка с окраской поверхности с проекцией в виде контурного графика.

surfl Сетка с окраской и освещением.

waterfall Слоеная поверхность.

pcolor Матрица на плоскости в цвете.

contour3 3D контур.

fill3 Закрашенный 3D многоугольник.

patch3 Окраска линий сетки. Окраска ячеек сетки.

pie3 3D круговая диаграмма.

Page 120: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.6.2. Функция plot3 (график 3D)

plot3 - эквивалент plot для 3D. Формат аналогичен. Строит аксонометрическое отображение матрицы на сетке, которая формируется командой meshgrid[начало : шаг : конец].

[x y]=meshgrid([-3:0.15:3]); % Создать сетку z=x.^2+y.^2; % Расчет матрицы plot3(x,y,z) % График

8.6.3. Функции mesh (сетка с окраской линий)

Это группа функций:

mesh(x,y,z) - окраска линий цветами по значению функции z,

meshc(x,y,z) - окраска линий с проекцией на плоскость x,y в виде контурного графика,

meshz(x,y,z) - окраска линий и столбцы.

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

Page 121: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

[x,y] = meshgrid(-3:1/8:3) % Создать сетку z = peaks(x,y) % Расчет матрицы subplot(2,2,1) % Подокно 1 mesh(x,y,z) % График. axis([-3 3 -3 3 -8 8]) % Пределы осей subplot(2,2,2) % Подокно 2 meshc(x,y,z) % График. axis([-3 3 -3 3 -8 8]) % Пределы осей subplot(2,2,3) % Подокно 3 meshz(x,y,z) % График. axis([-3 3 -3 3 -8 8]) % Пределы осей

8.6.4. Функции surf (сетка с окраской поверхности)

Это группа функций:

surf(x,y,z) - окраска поверхности цветами по значению функции z(x,y),

surfc(x,y,z) - окраска поверхности с проекцией на плоскость X,Y в виде контурного графика,

Page 122: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

surfl(x,y,z) - окраска поверхности и освещение точечным источником (по умолчанию он справа, сзади, сверху).

Группа подобна группе mesh, только окрашивает не линии, а поверхность.

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

[x,y] = meshgrid(-3:1/8:3) % Создать сетку z = peaks(x,y) % Расчет матрицы subplot(2,2,1) % Подокно 1 surf(x,y,z) % График. axis([-3 3 -3 3 -8 8]) % Пределы осей subplot(2,2,2) % Подокно 2 surfc(x,y,z) % График. axis([-3 3 -3 3 -8 8]) % Пределы осей subplot(2,2,3) % Подокно 3 surfl(x,y,z) % График. axis([-3 3 -3 3 -8 8]) % Пределы осей

Page 123: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.6.5. Функция waterfall (слоеная поверхность)

Функция waterfall(x,y,z) создает слоеный график, выводя значения функции z от х слоями для заданных у.

Аргументы функции:

x, y - независимые переменные,

z - функция.

В примере создаются два подокна. В верхнем обычный поверхностный график, в нижнем - слоеный.

[X,Y]=meshgrid([-3:0.2:3]) % Создать сетку Z=sin(X)./(X.^2+Y.^2+0.3) % Функция subplot(2,1,1) % Создать подокно 1 surf(X,Y,Z) % Поверхностный график colorbar % Добавить шкалу цветов subplot(2,1,2) % Создать подокно 2 waterfall(X,Y,Z) % Слоеный график

Page 124: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

colorbar % Добавить шкалу цветов

8.6.6. Функция pcolor (на плоскости в цветах)

Функция pcolor(z) создает двумерный график, в котором поверхность для матрицы z отображается цветами.

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

z=peaks(40) % Создать матрицу subplot(2,1,1) % Создать подокно 1 mesh(X,Y,Z) % Поверхностный график colorbar % Шкала цветов subplot(2,1,2) % Создать подокно 2 pcolor(z) % Матрица на плоскости colorbar % Шкала цветов

Page 125: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.6.7. Функция contour3 (3D контур)

Функция contour3(z) рисует для поверхности z контуры заданного уровня. Сама поверхность не рисуется.

[x,y]=meshgrid([-3:0.1:3]) % Задать сетку z=sin(x)./(x.^2+y.^2+0.3) % Функция contour3(z) % График. colorbar % Шкала цветов

Page 126: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.6.8. Функции fill3, patch (многоугольник)

Для закрашивания пространственных многоугольников. определены две функции:

fill3(x,y,z,'цвет'), только для 3D объектов.

patch(x,y,z,'цвет'), универсальная для 2D и 3D объектов.

Аргументы:

x, y, z - векторы координат вершин, размерность должна быть одинаковой.

'цвет') - цвет закраски.

Многоугольники рисуются с учетом размещения в пространстве. Изломы плоскостей многоугольников не показываются.

x1=[1 2 3 2] % Вектор х1 y1=[0 2 0 4] % Вектор у1 z1=[0 2 0 4] % Вектор z1 x2=[0 1 3 0] % Вектор х2 y2=[1 4 2 1] % Вектор у2 z2=[0 2 0 2] % Вектор z2 fill3(x1,y1,z1,'r') % График 1 grid on % Включить сетку

Page 127: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

patch(x2,y2,z2,'g') % График 2%

8.6.9. Функция pie3 (объемная круговая)

Функция pie3(x,[вектор выступов]) - рисует нормализованную 3D круговую диаграмму для вектора х. Диаграмма для каждого x содержит сектор, угловой размер которого определяется значением x/sum(x). Рядом с сектором выводится размер в процентах. Для визуального выделения любому сектору можно задать выступ. Аргументы функции:

x -- вектор значений,

[вектор выступов] – определяет размер выступа. Если 0, то выступа нет. x=[1 2 3 4 5] % Вектор значений pie3(x,[0 2 0 1 0]) % График

Page 128: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.7. Функции трех переменных

Определены функции:

slice - cечение поверхности.

cylinder - цилиндр.

sphere - сфера.

trimesh

trisurf - фигура с треугольными гранями.

8.7.1. Функция slice (сечение поверхности)

Функция slice строит сечения по осям независимых переменных x, y, z, в которых цветовой окраской отображаются значения функции v(x,y,z). Формат функции:

slice(x,y,z,v,[ вектор x],[ вектор y] ,[ вектор z]).

Векторы независимых переменных могут содержать любое число значений, они может быть и пустыми, но квадратные скобки пропускать нельзя. Аргументы:

x,y,z - независимые переменные,

v - функция трех переменных,

Page 129: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

[вектор х], [вектор у], [вектор z] - сечения по осям x,y,z. [x,y,z]=meshgrid(-2.5:.5:2.5) % Сетка переменных v=x.^2+y.^2+z.^2 % Расчет функции slice(x,y,z,v,[0 2],[2 ],[-2 2]) % График

8.7.2. Функция cylinder (цилиндр)

Функция cylinder(r,h) создает матрицу поверхности цилиндра с заданным радиусом r и высотой h. Применяется для последующего рисования оператором поверхностной графики.

В примере создаются два подокна, в которых рисуются фигуры. В правом y, z переставлены, что приводит к повороту фигуры.

r=10 % Радиус h=30 % Высота [x,y,z]=cylinder(r,h) % Создать матрицу subplot(1,2,1) % Подокно 1 surf(x,y,z,x) % Рисовать с цветами по значению х subplot(1,2,2) % Подокно 2 surf(x,z,y,x) % Рисовать с цветами по значению x

Page 130: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.7.3. Функция sphere (сфера)

Функция sphere(r) создает матрицу поверхности сферы с заданным радиусом r. Применяется для последующего рисования оператором поверхностной графики.

В примере создаются два подокна, в которых рисуются фигуры. В правом подокне переменные y, z переставлены, что приводит к повороту фигуры.

r=10 % Радиус h=30 % Высота [x,y,z]=sphere(r) % Создать матрицу subplot(1,2,1) % Подокно 1 surf(x,y,z,x) % Рисовать с цветами по значению х subplot(1,2,2) % Подокно 2 surf(x,z,y,x) % Рисовать с цветами по значению x

Page 131: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.7.4. Функции trimesh, trisurf (треугольные грани)

Функции trimesh, trisurf рисуют фигуры с треугольными гранями. Разница функций в способе закраски:

rimesh(tri,x,y,z,c) графика с закраской линий,

trisurf(tri,x,y,z,c) графика с закраской ячеек.

Аргументы:

tri - каркас треугольниками,

x,y,z - координаты,

c - признак цвета граней (если с пропущено, то цвета по z).

В примере создаются два подокна, в которых рисуются фигуры с использованием указанных функций (в левом - trimesh, в правом –trisurf).

x=rand(1,20) % Аргумент x y=rand(1,20) % Аргумент y z=sin(x.*y) % Функция tri=delaunay(x,y) % Каркас subplot(1,2,1) % Подокно 1 trimesh(tri,x,z,y) % График 1 subplot(1,2,2) % Подокно 2 trisurf(tri,x,z,y) % График 2

Page 132: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.8. Оформление графики, детали

8.8.1. Метки осей, заголовок окна, текст

Предназначены для помещения в графическое окно пояснений. Определены функции:

title(‘string’). Помещает строку 'string' в заголовок окна.

xlabel(‘Ось х’). Помещает строку 'Ось х' в заголовок оси х.

ylabel(‘Ось y’). Помещает строку 'Ось y' в заголовок оси y.

zlabel(‘Ось z’). Помещает строку 'Ось z' в заголовок оси z.

text(x,y,’string’). Помещает строку 'string' в позицию x,y.

text(x,y,z,’string’). Помещает строку 'string' в позицию x,y,z.

gtext(x,y,'string'). Строку 'string' ставим мышью. Функция выводит курсор мыши для выбора позиции.

8.8.2. Легенда

Легенда (legend) – это поле из строк, в которых отображается формат линий графика с пояснением. Для работы с легендой определены функции:

legend(string1, string 2, string3,…). Вывод легенды в текущий график.. legend(h,string1, string 2, string3,…). Помещает легенду в график с

дескриптором h. legend(ax,…). Помещает легенду на оси x.

Page 133: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

legend(m). Помещает легенду по осям, используя данные матрицы m.

legend off. Устраняет выведенную легенду.

legend. Возобновляет текущую легенду, если их много.

legend(…, Pos) Помещает легенду на график в позицию Pos, с номерами: 0 - лучшее место, 1 - верхний правый угол, 2 - верхний левый угол, 3 - нижний левый угол, 4 - нижний правый угол, 5 - справа от графика.

8.8.3. Маркировка линий равного уровня

Функция clabel(c) делает пометки линий контурного графика с. В линии контурного графика делается разрыв, в котором ставиться символ +, рядом с которым выводится значение уровня.

[x,y]=meshgrid(-3:0.1:3) % Создать сетку z=sin(x)./(x.^2+y.^2+0.3) % Получить матрицу z c=contour(x,y,z,10) % График clabel(с) % Сделать на нем метки

Page 134: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

8.8.4. Палитра и шкала цветов

Список палитр:

hsv Радуга. Красный => синий => зеленый => красный

default По умолчанию = jet.

Красный=>желтый=>зеленый=>синий=>черный

hot Жара. Белый=>желтый=>красный=>черный.

gray Серая. Белый => черный.

bone Серая с синевой.

copper Серая с оттенками меди.

pink Серая с розовыми оттенками.

white Белая. Все белое. flag Флаги. Чередуются 4: черный, синий, белый, красный.

lines Цвета линий. Чередуются 6 неярких цветов .

colorcube

Расширенная RGB.

Произвольные цвета.

jet Разновидность HSV.

Красный=>желтый=>зеленый=>синий=>черный

prism Призматическая.

cool Голубо-фиолетовая.

automn Осень. Желтый=> красный.

spring Весна. Желтый=>красный=>фиолетовый.

winter Зима. Зеленый => синий.

summer Лето. Желтый => зеленый.

Палитру можно вывести на график в виде столбца:

Вертикальный столбец справа от графика.

Горизонтальный столбец под графиком.

По умолчанию используется столбец вертикальный, справа.

Для работы с палитрами определены функции:

colormap('палитра') - выбор палитры.

colorbar('vert') - вывод шкалы цветов вертикальным столбцом.

colorbar(‘horiz’) - вывод шкалы цветов горизонтальным столбцом.

Page 135: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

colorbar - вывод шкалы цветов столбцом по умолчанию.

В примере создаются четыре окна для демонстрации палитр (палитра это свойство объекта figure, а не axes). Показан код для одного окна. Другие отличаются палитрой и заголовком.

z=peaks(40) % Создать матрицу colormap('jet') % Палитра surf(z) % Поверхностный график colorbar % Шкала цветов title('Palette jet') % Заголовок

8.8.5. Функции shading (окраска поверхностей)

Для окраски поверхностей определены функции:

shading flat. По значениям координат.

shading interp. Билинейная интерполяция.

shading faceted. Равномерная ячеек., используется по умолчанию

Page 136: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

В примере создаются три подокна для демонстрации окраски с использованием указанных функций.

z=peaks(40) % Создать матрицу subplot(2,2,1) % Подокно 1 surf(z) % Поверхностный график title('shading faceted') % Заголовок 1 subplot(2,2,2) % Подокно 2 surf(z) % Поверхностный график shading flat % Раскраска 2 title('shading flat') % Заголовок 2 subplot(2,2,3) % Подокно 2 surf(z) % Поверхностный график shading interp % Раскраска 3 title('shading interp') % Заголовок 3

Page 137: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

9. Создание графического ПИ

9.1. Визуальное программирование GUIDE

Функции графического ПИ Их можно посмотреть в браузере функций в каталоге GUI Development.

Определены категории:

Predefined Dialog Boxes Предопределение диалоговых блоков

User Interface Deployment Интерфейсы, разработанные пользователем

User Interface Development Разработка интерфейса пользователя

Objects from Callbacks Объекты от обработчика событий

GUI Utilities Утилиты графического интерфейса пользователя

Program Execution Исполнение программ

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

GUIDE – конструктор графического интерфейса;

Property Inspector – инспектор свойств;

Object Browser – браузер объекта;

M_file Editor – редактор M_файлов;

Component Callbacks – средство создания функций обработки событий для компонентов;

Figure Callbacks – средства создания функций для обработки событий окон;

Align Objects – средства выравнивания положения объектов;

Grid and Rules – средства управления выводом сетки и линейками просмотра;

Page 138: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Menu Editor – редактор меню;

The Order Editor – средство изменения порядка активизации компонентов

при нажатии клавиши Tab.

Эти средства дают достаточный набор средств для визуально ориентированного программирования и проектирования GUI. Такой подход характерен для ряда современных визуально ориентированных языков программирования, таких как Visual_BASIC, Visual_C# и др., и существенно облегчает создание приложений с GUI. Это обусловлено тем, что в данном случае генерация программного кода происходит автоматически, что минимизирует усилия пользователя по программированию, а порою вообще не требует таковых.

Главным средством в визуально ориентированном проектировании GUI является приложение GUIDE (GUI Designer). При работе с инструментом GUIDE можно создавать окна GUI путем выбора мышью нужных элементов управления и перемещения их в окно GUI. Таким образом, могут создаваться различные элементы интерфейса, например кнопки, раскрывающиеся списки, линейки прокрутки и т. д. При этом возможно программирование событий, которые возникают при обращении пользователя к заданным элементам управления. Визуальное программирование совмещается с объектно- ориентированным, в частности в первом широко используется свойство наследования признаков родительских объектов их потомками.

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

При создании приложений с GUI полезны следующие средства системы MATLAB:

MATLAB: Creating Graphical User Interfaces;

MATLAB: Functions – Categorical List: Creating Graphical User Interfaces;

MATLAB: Handle Graphics Property Browser.

9.2. Открытие окна инструмента GUIDE

Для открытия окна инструмента GUIDE надо использовать команду File>>New>>GUI. При этом инструмент запускается и появляется диалоговое окно GUIDE Quick Start.

Page 139: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Это окно имеет две вкладки:

Create New GUI – создание нового приложения с GUI.

Open Existing GUI – открытие уже существующего приложения с GUI.

На вкладке создания нового приложения Create New GUI имеется список из четырех заготовок:

Blank GUI – пустое окно приложения,

GUI with Uicontrols – заготовка с кнопками, переключателями и областями ввода, иллюстрирующая создание приложения с GUI вычислительного характера;

GUI with Axes and Menu – заготовка с осями, меню, кнопкой и раскрывающимся списком, иллюстрирующая создание приложения с GUI графического характера;

Modal Question Dialog – заготовка для модального окна, иллюстрирующего простейший диалог.

Внизу вкладки Create New GUI есть установка опции «Save on startup as:», позволяющая сразу задать имя файла, в котором будет храниться окно графического интерфейса при выходе из режима редактирования. Но, поскольку приложение всегда можно будет сохранить и в дальнейшем, в процессе редактирования создаваемого окна GUI, этот флаг устанавливать не обязательно.

Page 140: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Выбрав мышью на вкладке Create New GUI заготовкуBlank GUI и нажав клавишу OK, можно наблюдать инициализацию инструмента GUIDE. При этом появляется временное окошко инициализации, показанное на рис. 12.2.

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

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

Представление панели объектов можно изменить, вызвав командой File=>Preferencies окно предпочтений, в котором установить флаг отображения имен объектов.

Page 141: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Получим окно более информативное:

Окно имеет титульную строку, меню и две панели инструментов –

Page 142: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

обычную горизонтальную,

вертикальную с набором объектов GUI.

Горизонтальная панель инструментов позволяет работать с окном приложения с GUI, не обращаясь к его меню. На этой панели в порядке слева направо расположены следующие кнопки:

New Figure – создание нового окна с GUI;

Open Figure – открыть существующее окно GUI;

Save Figure – сохранить окно GUI;

Сut – вырезание объекта и перенос его в буфер;

Copy – копирование объекта в буфер;

Paste – перенос объекта из буфера с сохранением его в нем;

Undo – отмена последней операции;

Redo – возврат к отмененной операции;

Align Objects – выравнивание объектов;

Menu Editor – вывод окна редактора меню;

Tab Order Editor – вывод окна редактора порядка обвода элементов клавишей Tab;

Toolbar Editor - редактор панели инструментов.

M_file Editor – вывод окна редактора M_файлов;

Property Inspector – вывод окна инспектора свойств;

Object Browser – вывод окна браузера объектов;

Run Figure – запуск созданного приложения с GUI.

Вертикальная панель с объектами GUI содержит следующие кнопки:

Select – селекция (выбор) объектов создаваемого окна GUI.

Push Button – обычная кнопка.

Slider – линейка прокрутки (слайдер).

Radio Button – радиокнопка (зависимый переключатель).

Check Box – зависимый переключатель.

Edit Text –редактор текста.

Static Text – статический текст.

Pop-up Menu – открывающийся список.

Listbox – список.

Toggle Button– кнопка.переключатель.

Table - таблица.

Axes – оси графика.

Panel – панель.

Button Group – кнопка для группы объектов.

Page 143: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

ActiveX Component – компонент ActiveX..

При выборе ActiveX отображается окно выбора конкретного оюъгкта. Например, можно выбрать календарь.

В итоге окно GUI примет вид:

Page 144: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

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

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

Page 145: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Созданная описанным образом GUI пока не действует. выполнялись какие либо действия, объект должен быть связан с программой обработки событий. Для каждого объекта в окне приложения с GUI шаблон обработчика, именуемый Callback, создается приложением GUIDE автоматически при его сохранении с именем, например, MyGUI. При сохранении создаются два файла:

MyCUI.fig - графическое окно GUI.

MyGUI.m - исполняемый файл.

А это результат прогона:

Page 146: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Меню окна GUIDE содержит следующие позиции:

File – файловые операции, вызов окна Preferences и печать;

Edit – обычные операции редактирования и работы с буфером Windows;

View – просмотр деталей GUI;

Layout – разметка окна;

Tools – вызов инструментальных средств;

Help – вызов справки.

Каждый объект (компонент) GUI имеет ряд свойств. Их полный набор задается таблицей из 41 свойства, представленной ниже.

Свойство Назначение Значения

BackgroundColor Цвет фона [0.753, 0.753, 0.753]

BeingDeleted Возможность удаления on – включено, off –выключено

BusyAction Реакция на прерывание queone –в очередь, cancel –игнорировать

ButtonDownFc Указатель на функцию обработки нажатия правой клавиши мыши

Cdata Массив для хранения Тип truecolor

Page 147: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

изображения на поверхности объекта

Callback Указатель на функцию обработки события

on – включено, off –выключено

Children Указатели на потомков Clipping Признак отсечения on – включено,

off –выключено

CreateFn Функция «Создание объекта»

DeleteFn Функция «Удаление объекта»

Enable Доступ к объекту on – доступ есть, off – доступа нет

Extend Габаритный прямоугольник

FontAngle Наклон букв normal, italic, oblicue

FontName Имя шрифта Из списка Windows

FontSize Размер шрифта Из списка Windows

FontUnits Единицы измерения шрифтов

inches, centimeterts, normalized, pixels

FontWeight Толщина контура букв normal, light, demi, bold

ForegroundColor Цвет рисования черный

[0.0, 0.0, 0.0]

HandleVisibility Видимости указателя обработчика событий

on – доступен, off – не доступен

HitTest Разрешение поиска объекта по свойству

on – разрешен, off – не разрешен

HorizontalAlligment Выравнивание по горизонтали

left, right, center

Interruptible Прерывание on – разрешено, off – не разрешено

KeyPressFcn Указатель на «Нажата кнопка» когда компонент находится в фокусе

ListBoxTop Индекс верхушки списка

9

Max Максимальное Value 1

Min Минимальное Value 0

Perent Указатель на родительский объект

Position Позиция объекта в виде вектора

Page 148: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

Selected Признак выбора объекта

on – выбран, off – не выбран

SelectionHighlight Повышенная яркости on – включено, off – выключено

SliderStep Вектор перемещений слайдера

String Надпись

Style Стиль = тип объекта

Tag Тег = имя объекта Пустая строка

TooltipString Текст всплывающей подсказки

Type Класс объекта

UIContextNenu Всплывающее меню объекта

Units Единицы измерения линейных величин

inches, centimeterts

UserData Массив данных объекта

[ ] – пустой массив

Value Значение

Visible Признак видимости объекта

on – виден, off – не виден

Page 149: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В
Page 150: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

10. Внешние интерфейсы

Функции графического ПИ Их можно посмотреть в браузере функций в каталоге External Interfaces

Определены категории:

Shared Libraries Разделяемые библиотеки

Java Java

.NET .NET

Component Object Model and ActiveX Объекты COM и ActiveX

Web Services Web службы

Serial Port Devices Устройства последовательного порта

Вывод данных осуществляется функцией disp(Данные). Выводит любые данные в командное окно.

>> disp('Это сообщение') Это сообщение >> disp(pi) 3.1416 >> disp(123) 123

Для создания паузы определены функции:

Функция Описание

pause Пауза до нажатия любой клавиши.

pause(N) Пауза на N секунд.

pause on Включает режим отработки пауз.

pause off Выключает режим отработки пауз.

for i=1:5 % Начало цикла

Page 151: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

i^2 % Вычисление if i=3 pause(5), end % Проверка на паузу end % Конец цикла

MATLAB может работать со следующими форматами файлов:

Формат файла Содержимое файла Расширение

MATLAB Рабочая область MATLAB .mat

Текст любое

XML Текст, форматированный в XML .xml

Звук NeXT/Sun .au

Microsoft Wave .wav

Видеоклип Звук, видео .avi

Научные данные CDF – Common Data Format .cdf

FITS – Flexible Image Nransport System .fits

NDF – Nierarchical Data Format .hdf

Электронные таблицы

Excel .xls

Lotus 123 .wkl

Графика TIFF .tiff

PNG .png

HDF .hdf

BMP .bmp

JPEG .jpg

GIF .gif

PCX .pcx

XWD .xwd

Cursor .cur

Icon .ico

В MATLAB есть несколько способов загрузки файлов с диска в рабочую область. Самый простой - мастер импорта, пользователю нужно в диалоге выбирать предлагаемые действия.

Диалоговый ввод осуществляется функцией input(‘строка приглашения’,’s’). Она выводит в командное окно текст с приглашением. Если нужно ввести численное значение, то после ввода текстового представления нужно его преобразовать в число.

Пример 1. Ввод числа в виде строки

>> r= input('Введите радиус окружности: ','s'); % Запрос Введите радиус окружности: 25 % Ввод >> r % Вывод

Page 152: Поволжский Государственный Университет …ivt.psuti.ru/files/SystCompMat/LK_MATLAB_Akchurin_2012.pdf · Начало и ... Дьяконов В

r = 25 >>

Результат - текст.

Пример 2. Вычисление с введенным значением

>> r= input('Введите радиус окружности: ','s'); % Запрос Введите радиус окружности: 25 % Ввод >> r*2 % Вывод ans = 100 106 >>

Результат - вектор из номеров символов 2 и 5 в таблице кодировки, умноженные на 2.