Как создать функцию в matlab. Сохранение рабочей среды. MAT файлы. Фактические и формальные параметры функции

  • 03.07.2019

Сейчас возможности системы значительно превосходят возможности первоначальной версии матричной лаборатории Matrix Laboratory. Нынешний MATLAB, детище фирмы The MathWorks, Inc., – это высокоэффективный язык инженерных и научных вычислений. Он поддерживает математические вычисления, визуализацию научной графики и программирование с использованием легко осваиваемого операционного окружения. Наиболее известные области применения системы MATLAB:

Математика и вычисления;

Разработка алгоритмов;

Вычислительный эксперимент, имитационное моделирование, макетирование;

Анализ данных, исследование и визуализация результатов;

Научная и инженерная графика;

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

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

Версия MATLAB 6.1 - это предпоследнее достижение разработчиков (последнее - MATLAB 6.5).

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

Операционная среда системы MATLAB 6.1. Операционная среда системы MATLAB 6.1 - это множество интерфейсов, которые поддерживают связь этой системы с внешним миром через диалог с пользователем через командную строку, редактор М-файлов, взаимодействие с внешними системами Microsoft Word, Excel и др.

После запуска программы MATLAB на дисплее компьютера появляется её главное окно, содержащее меню , инструментальную линейку с кнопками и клиентскую часть окна со знаком приглашения . Это окно принято называть командным окном системы MATLAB (рис. 1).


Меню Файл (рис. 2) объединяет обычные функции: Правка отвечает за изменение содержания Окна команд (отмена, повтор, вырезать, копировать, вставить, выбрать всё, удалить и др.) и за очистку некоторых окон MATLAB; меню Вид – за оформление Рабочего стола; меню Web – запускает Web-страницы из Internet; меню Окно – работает с редактором/отладчиком М-файлов (закрывает все М-файлы, делает текущим один из них); меню Помощь – работает со справочной документацией и демонстрациями.


Особого рассмотрения заслуживает опция Предпочтения ... (выбор характеристик), которая при выборе открывает окно, включающее слева дерево объектов (рис. 3), а справа их возможные характеристики.

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

В клиентской части командного окна MATLAB после знака приглашения можно вводить различные числа, имена переменных и знаки операций, что в совокупности составляет некоторые выражения. Нажатие клавиши Enter заставляет систему MATLAB вычислить выражение или, если оно не вычисляется, повторить его. Хотя знак «;» в конце строки гасит вывод результата (эхо-вывод).

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

Итак, были подвергнуты разбору структурные части командного окна MATLAB. Но кроме них существуют ещё несколько элементов MATLAB, которые помогают при работе:

Команды - окно, содержащее по порядку введённые ранее команды в Окне команд («история команд»).

Рабочая область – это область памяти MATLAB, в которой размещены переменные системы. Содержимое этой области можно просмотреть из командной строки с помощью команд who (выводит только имена переменных) и whos (выводит информацию о размерах массивов и типе переменной) или в отдельном окне под тем же названием. В нём можно выполнить следующие операции: загрузить файл данных, сохранить Рабочую область как (команды позволяют открыть и сохранить содержимое рабочей области в двоичном MAT-файле), удалить выбранные переменные; открыть выбранные переменные (где можно изменить их значение). Кроме этого в меню Правка можно очистить как Окно команд и Историю команд, так и Рабочую область (или выполнить команду в Окне команд: clear ).

Для сохранения и запуска Рабочей области можно использовать команды load и save.

Пример.

Saving to: matlab.mat

>> save my.mat

>> load my.mat

>> save my2

>> load my2

Текущий каталог – окно, являющееся своеобразным «проводником» по каталогам MATLAB.

Запустить Редактор – окно, отражающее дерево структурных элементов MATLAB и других установленных вместе с ним программных средств, которые можно запускать двойным левым щелчком мыши. Например, это окно может выглядеть, как показано на рис 9.

Редактор/отладчик М-файлов – один из важнейших структурных частей MATLAB, который может быть открыт выбором соответствующей опции в главном меню, на инструментальной панели или вызван из командной строки командой edit или edit <имя М-файла> и позволяющий создавать и редактировать М-файлы.

Редактор/отладчик поддерживает следующие операции: создание нового М-файла; открытие существующего М-файла; сохранение М-файла на диске; удаление фрагмента; копирование фрагмента; вставка фрагмента; помощь; установить/удалить контрольную точку; продолжить выполнение и др.

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

Интерактивный сеанс работы. М-файлы . Интерактивный режим – это пользовательский режим ввода с клавиатуры команд и выражений, в результате выполнения которых получаются необходимые числовые результаты, которые можно легко и быстро визуализировать встроенными графическими средствами пакета MATLAB. Но использование этого режима для создания и сохранения конкретной программы невозможно. Поэтому создатели MATLAB кроме Окна команд, в котором реализован интерактивный режим, выделили специальные файлы, содержащие коды языка MATLAB, и назвали M-файлами (*.m). Для создания M-файла используется текстовый редактор (редактор/отладчик М-файлов).

Работа в редакторе M-файлов. Работа из командной строки MatLab затрудняется, если требуется вводить много команд и часто их изменять. Самым удобным способом выполнения команд является использование M -файлов, в которых можно набирать команды, выполнять их все сразу или частями, сохранять в файле и использовать в дальнейшем. Для работы с M -файлами предназначен редактор M -файлов. При помощи редактора можно создавать собственные функции и вызывать их, в том числе и из командной строки.

Раскройте меню File основного окна MatLab и в пункте New выберите подпункт M-file. Новый файл открывается в окне редактора M -файлов (рис. 10). Запишем в файл программу вычисления среднего арифметического пере-


менных a и b, затем сохраним с именем fun1.m. Сравните способы решения задачи, представленные в таблице.

Работа с файлами и оболочкой DOS

Команды cd, dir, delete, type позволяют из командной строки системы MATLAB выполнить ряд команд DOS, связанных с управлением файлами. Приведенная таблица отражает связь команд системы MATLAB с командами DOS:

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

Запуск внешних программ . Признаком перехода к выполнению команд DOS является знак "!", который указывает, что следующая за ним команда - это команда DOS. Это исключительно полезно при вызове утилит и выполнении внешних других программ без выхода из системы MATLAB.

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

Существует много приемов для перемещения данных между системой MATLAB и другими приложениями. В большинстве случаев при работе с данными системы MATLAB можно просто использовать команды чтения и записи файлов. Для более сложных наборов данных можно создать собственные программы для чтения и записи на языках C или Fortran. Импортирование данных в систему MATLAB. Существует несколько способов для передачи данных из других приложений в систему MATLAB. Выбор способа зависит от объема и формата данных.

  • Ввод данных в виде списка. Если количество данных невелико, то их можно просто напечатать, помещая в квадратные скобки. Этот метод неудобен при большом количестве данных, поскольку их невозможно редактировать.
  • Формирование данных в М-файле.Используя текстовый редактор, можно сформировать М-файл, в колором данные представлены как список элементов, это тот же первый способ, но он имеет то преимущество,что позоляет с помощью редактора корректировать данные. Достаточно после исправления перезапустить М-файл, чтобы ввести исправленные данные.
  • Загрузка данных из ASCII-файла. ASCII-файлы накапливают данные в 7-разрядном коде без контроля по четности. Каждая строка содержит одинаковое количество значений, разделенных пробелами, и завершается символом возврата каретки. Эти файлы можно редактировать, используя обычный текстовый редактор. Их можно читать непосредственно в системе MATLAB, используя функцию load. При этом создается переменная, имя которой совпадает с именем файла. Можно воспользоваться функций dlmread, чтобы указать другой тип разделителя.
  • Чтение данных с использованием функций ввода/вывода. Применение функций ввода/вывода, а также функций fopen и fread, полезно при загрузке файлов данных из других приложений, использующих специальные форматы данных.
  • Использование специальных средств для чтения файлов. Для чтения файлов, записанных в специальных форматах, в системе MATLAB имеются следующие специализированные функции:
  • Создание MEX-файла. Наилучший способ создания программ для?oения данных - это использовать уже имеющиеся программы на языках C или Fortran для чтения данных из других приложений. Однако этот метод, называемый смешанным программированием, требует написания специальных программ-связок, оформляемых в виде MEX-файлов.
  • Разработка программы на языках Fortran или C. Программисты, использующие языки Fortran или C, могут написать специальные программы для преобразования данных в формат MAT-файла системы MATLAB. В этом случае преобразованные данные могут быть загружены в систему MATLAB с помощью обычной команды load.

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

  • Использование команды diary. Для массивов небольших размеров можно использовать команду diary, чтобы создать файл дневника, который включает команды MATLAB, используемые в течение сеанса работы, а также позволяет на экране просмотреть необходимые данные. Записи дневника могут быть полезны для вложения в документы или отчеты. В дальнейшем можно использовать текстовый редактор для редактирования дневника.
  • Сохранение данных в формате ASCII. Команда save с опцией -ascii позволяет записать данные в этом формате, причем, используя команду dlmwrite, можно задать другой тип разделителя.
  • Использование специальных средств для записи файлов. Для записи файлов в специальных форматах, определяемых приложениями, в системе MATLAB имеются следующие специализированные функции:
  • Создание MEX-файла. Наилучший способ создания программ для записи данных - это использовать уже имеющиеся программы на языках C или Fortran для записи данных в другие приложения. Однако этот метод, называемый смешанным программированием, требует написания специальных программ-связок, оформляемых в виде MEX-файлов.
  • Разработка программы на языках Fortran или C. Программисты, использующие языки Fortran или C, могут написать специальные программы для преобразования данных из формата MAT-файла системы MATLAB в формат приложения. В этом случае данные могут быть выгружены из системы MATLAB с помощью обычной команды save.
  • Текстовые файлы с разделителями. Функции dlmread и dlmwrite позволяют читать и записывать данные, отделенные разделителем, используя ASCII-файл. В качестве разделителя может быть использован любой символ, который отделяет одно значение от другого.

Например, рассмотрим файл с именем ph.dat, который содержит данные, разделенные точкой с запятой:

7.2; 8.5; 6.2; 6.6
5.4;9.2;8.1;7.2

A = dlmread("ph.dat", ";");

Второй аргумент функции dlmread указывает тип разделителя.

В дополнение к разделителю, который вы используете, функция dlmread также считает разделителями имеющиеся пробелы. Поэтому функция dlmread, приведенная выше, будет работать правильно, если даже содержимое файла ph.dat будет таким:
7.2; 8.5; 6.2; 6.6
5.4; 9.2 ;8.1; 7.2

Предупреждение.

Первый аргумент М-функции dlmread - это имя файла, а не идентификатор файла. Поэтому не надо предварительно открывать файл с помощью функции fopen, а следует сразу применять функции dlmread и dlmwrite.

Продемонстрируем, как функция dlmwrite выполняет запись текста с разделителями во внешний файл с именем myfile, используя разделитель ";":

A =
1 2 3
4 5 6
dlmwrite("myfile",A,";")
1; 2; 3
4; 5; 6

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

  • М-файлы являются ASCII-файлами, содержащими обычный текст. Они не зависимы от типа используемого компьютера. В то же время для различных платформ символами окончания строки могут быть как символ CR, так и символ LF. Интерпретатор системы MATLAB допускает любые комбинации.
  • МАТ-файлы являются двоичными файлами и зависят от типа используемого компьютера. Тем не менее, они могут переноситься с одного типа компьютера на другой, поскольку содержат признак используемого компьютера в заголовке файла. Система MATLAB проверяет этот признак, когда загружает файл и, если оказывается, что файл создан на компьютере другой платформы, выполняет необходимое преобразование.

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

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

Например, чтобы создать в текущем каталоге файл дневника с именем febr01.out следует использовать команду diary febr01.out.

Для того чтобы в процессе ведения дневника прервать запись, достаточно воспользоваться командой diary off, а для возобновления командой diary on.

М-файл Startup . Файл matlabrc.m, который размещен в каталоге local, зарезервирован для использования программистами фирмы MathWorks, а на многопользовательских системах для использования менеджером системы.

Файл startup.m предназначен для пользователя. В нем можно устаноаить, задаваемые по умолчанию пути доступа, дескриптоы графики, а также переменные рабочей области.

Например, в файл startup.m можно ввести строку, которая добавит каталог /home/me/mytools к установленному по умолчанию списку путей доступа addpath /home/me/mytools.

1. Урок 23. Знакомство с пакетами расширения MATLAB

Урок №23.

Знакомство с пакетами расширения МАТLАВ

    Вывод списка пакетов расширения

    Simulinc for Windows

    Пакет символьной математики

    Пакеты математических вычислений

    Пакеты анализа и синтеза систем управления

    Пакеты идентификации систем

    Дополнительные средства пакета Simulinc

    Пакеты для обработки сигналов и изображений

    Прочие пакеты прикладных программ

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

2. Вывод списка пакетов расширения

Вывод списка пакетов расширения

Полный состав системы MATLAB 6.0 содержит ряд компонентов, название, номер версии и дату создания которых можно вывести на просмотр командой ver:

MATLAB Version 6.0.0.88 (R12) on PCWIN MATLAB License Number: 0

MATLAB Toolbox

Version 6.0

06-0ct-2000

Version 4.0

Version 4.0

04-0ct-2000

Stateflow Coder

Version 4.0

04-0ct-2000

Real -Time Workshop

Version 4.0

COMA Reference Blockset

Version 1.0.2

Communications Blockset

Version 2.0

Communications Toolbox

Version 2.0

Control System Toolbox

Version 5.0

DSP Blockset

Version 4.0

Data Acquisition Toolbox

Version 2.0

05-0ct-2000

Database Toolbox

Version 2.1

Datafeed Toolbox

Version 1.2

Dials & Gauges Blockset

Version 1.1

Filter Design Toolbox

Version 2.0

Financial Derivatives Toolbox

Version 1.0

Financial Time Series Toolbox

Version 1.0

Financial Toolbox

Version 2.1.2

Fixed-Point Blockset

Version 3.0

Fuzzy Logic Toolbox

Version 2.1

GARCH Toolbox

Version 1.0

Image Processing Toolbox

Version 2.2.2

Instrument Control Toolbox

Version 1.0

LMI Control Toolbox

Version 1.0.6

MATLAB Compiler

Version 2.1

MATLAB Report Generator

Version 1.1

Mapping Toolbox

Version 1.2


Version 1.0.5

Motorola DSP Developer"s Kit

Version 1.1

Ol-Sep-2000

Ми-Analysis and Synthesis Toolbox

Version 3.0.5

Neural Network Toolbox

Version 4.0

Nonlinear Control Design Blockset

Version 1.1.4

Optimization Toolbox

Version 2.1

Partial Differential Equation Toolbox

Version 1.0.3

Power System Blockset

Version 2.1

Real -Time Workshop Ada Coder

Version 4.0

Real -Time Workshop Embedded Coder

Version 1.0

Requirements Management Interface

Version 1.0.1

Robust Control Toolbox

Version 2.0.7

SB2SL (converts SystemBuild to Simu

Version 2.1

Signal Processing Toolbox

Version 5.0

Simulink Accelerator

Version 1.0

Model Differencing for Simulink and...

Version 1.0

Simulink Model Coverage Tool

Version 1.0

Simulink Report Generator

Version 1.1

Spline Toolbox

Version 3.0

Statistics Toolbox

Version 3.0

Symbolic Math Toolbox

Version 2.1.2


Version 5.0

Wavelet Toolbox

Version 2.0

Version 1.1

xPC Target Embedded Option

Version 1.1

Обратите внимание, что практически все пакеты расширения в MATLAB 6.0 обновлены и датируются 2000 годом. Заметно расширено их описание, которое в PDF-формате уже занимает много более десятка тысяч страниц. Ниже дано краткое описание основных пакетов расширения

3. Simulink for Windows

Simulink for Windows

Пакет расширения Simulink служит для имитационного моделирования моделей, состоящих из графических блоков с заданными свойствами (параметрами). Компоненты моделей, в свою очередь, являются графическими блоками и моделями, которые содержатся в ряде библиотек и с помощью мыши могут переноситься в основное окно и соединяться друг с другом необходимыми связями. В состав моделей могут включаться источники сигналов различного вида, виртуальные регистрирующие приборы, графические средства анимации. Двойной щелчок мышью на блоке модели выводит окно со списком его параметров, которые пользователь может менять. Запуск имитации обеспечивает математическое моделирование построенной модели с наглядным визуальным представлением результатов. Пакет основан на построении блочных схем путем переноса блоков из библиотеки компонентов в окно редактирования создаваемой пользователем модели. Затем модель запускается на выполнение. На рис. 23.1 показан процесс моделирования простой системы - гидравлического цилиндра. Контроль осуществляется с помощью виртуальных осциллографов - на рис. 23.1 видны экраны двух таких осциллографов и окно простой подсистемы модели. Возможно моделирование сложных систем, состоящих из множества подсистем.

Simulink составляет и решает уравнения состояния модели и позволяет подключать в нужные ее точки разнообразные виртуальные измерительные приборы. Поражает наглядность представления результатов моделирования. Ряд примеров применения пакета Simulink уже приводился в уроке 4. Предшествующая версия пакета достаточно подробно описана в книгах. Основным нововведением является обработка матричных сигналов. Добавлены отдельные пакеты повышения производительности Simulink, такие как Simulink Accelerator для компиляции кода моделей, Simulink profiler для анализа кода и т. д.

Рис. 23.1. Пример моделирования системы гидравлического цилиндра с помощью расширения Simulink

1.gif

Изображение:

1b.gif

Изображение:

4. Real Time Windows Target и Workshop

Real Time Windows Target и Workshop

Подключающаяся к Simulink мощная подсистема имитационного моделирования в реальном масштабе времени (при наличии дополнительных аппаратных средств в виде плат расширения компьютера), представленная пакетами расширения Real Time Windows Target и Workshop, - мощное средство управления реальными объектами и системами. Кроме того, эти расширения позволяют создавать исполняемые коды моделей. Рис. 4.21 в уроке 4 показывает пример такого моделирования для системы, описываемой нелинейными дифференциальными уравнениями Ван-дер-Поля. Достоинством такого моделирования является его математическая и физическая наглядность. В компонентах моделей Simulink можно задавать не только фиксированные параметры, но и математические соотношения, описывающие поведение моделей.

5. Report Generator для MATLAB и Simulink

Report Generator для MATLAB и Simulink

Генераторы отчетов - средство, введенное еще в MATLAB 5.3.1, дает информацию о работе системы MATLAB и пакета расширения Simulink. Это средство очень полезно при отладке сложных вычислительных алгоритмов или при моделировании сложных систем. Генераторы отчетов запускаются командой Report. Отчеты могут быть представлены в виде программ и редактироваться.

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

6. Neural Networks Toolbox

Neural Networks Toolbox

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

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

Для управляемых сетей можно выбрать прямую или рекуррентную архитектуру, используя множество обучающих правил и методов проектирования, таких как персептрон, обратное распространение, обратное распространение Левенберга, сети с радиальным базисом и рекуррентные сети. Вы можете легко изменять любые архитектуры, обучающие правила или переходные функции, добавлять новые, - и все это без написания единой строки на Си или ФОРТРАН. Пример применения пакета для распознавания образа буквы приводился в уроке 4. Детальное описание предшествующей версии пакета можно найти в книге.

7. Fuzzy Logic Toolbox

Fuzzy Logic Toolbox

Пакет прикладных программ Fuzzy Logic относится к теории нечетких (размытых) множеств. Обеспечивается поддержка современных методов нечеткой кластеризации и адаптивных нечетких нейронных сетей. Графические средства пакета позволяют интерактивно отслеживать особенности поведения системы.

Основные возможности пакета:

  • определение переменных, нечетких правил и функций принадлежности;
  • интерактивный просмотр нечеткого логического вывода;
  • современные методы: адаптивный нечеткий вывод с использованием нейронных сетей, нечеткая кластеризация;
  • интерактивное динамическое моделирование в Simulink;
  • генерация переносимого Си кода с помощью Real-Time Workshop.

Этот пример наглядно показывает отличия в поведении модели при учете нечеткой логики и без такого учета.

8. Symbolic Math Toolbox

Symbolic Math Toolbox

Пакет прикладных программ, дающих системе MATLAB принципиально новые возможности - возможности решения задач в символьном (аналитическом) виде, включая реализацию точной арифметики произвольной разрядности. Пакет базируется на применении ядра символьной математики одной из самых мощных систем компьютерной алгебры - Maple V R4. Обеспечивает выполнение символьного дифференцирования и интегрирования, вычисление сумм и произведений, разложение в ряды Тейлора и Маклорена, операции со степенными многочленами (полиномами), вычисление корней полиномов, решение в аналитическом виде нелинейных уравнений, всевозможные символьные преобразования, подстановки и многое другое. Имеет команды прямого доступа к ядру системы Maple V.

Пакет позволяет готовить процедуры с синтаксисом языка программирования системы Maple V R4 и устанавливать их в системе MATLAB. К сожалению, по возможностям символьной математики пакет сильно уступает специализированным системам компьютерной алгебры, таким как новейшие версии Maple и Mathematica.

9. Пакеты математических вычислений

Пакеты математических вычислений

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

10. NAG Foundation Toolbox

NAG Foundation Toolbox

Одна из самых мощных библиотек математических функций, созданная специальной группой The Numerical Algorithms Group, Ltd. Пакет содержит сотни новых функций. Названия функций и синтаксис их вызова заимствованы из известной библиотеки NAG Foundation Library. Вследствие этого опытные пользователи NAG ФОРТРАН могут без затруднений работать с пакетом NAG в MATLAB. Библиотека NAG Foundation предоставляет свои функции в виде объектных кодов и соответствующих m-файлов для их вызова. Пользователь может легко модифицировать эти МЕХ-файлы на уровне исходного кода.

Пакет обеспечивает следующие возможности:

    корни многочленов и модифицированный метод Лагерра;

    вычисление суммы ряда: дискретное и эрмитово-дискретное преобразование Фурье;

    обыкновенные дифференциальные уравнения: методы Адамса и Рунге-Кутта;

    уравнения в частных производных;

    интерполяция;

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

    аппроксимация кривых и поверхностей: полиномы, кубические сплайны, полиномы Чебышева;

    минимизация и максимизация функций: линейное и квадратичное программирование, экстремумы функций нескольких переменных;

    разложение матриц;

    решение систем линейных уравнений;

    линейные уравнения (LAPACK);

    статистические расчеты, включая описательную статистику и распределения вероятностей;

    корреляционный и регрессионный анализ: линейные, многомерные и обобщенные линейные модели;

    многомерные методы: главных компонент, ортогональные вращения;

    генерация случайных чисел: нормальное распределение, распределения Пуассона, Вейбулла и Кощи;

    непараметрические статистики: Фридмана, Крускала-Уоллиса, Манна-Уитни; О временные ряды: одномерные и многомерные;

    аппроксимации специальных функций: интегральная экспонента, гамма-функция, функции Бесселя и Ганкеля.

Наконец, этот пакет позволяет пользователю создавать программы на ФОРТРАН, которые динамически линкуются с MATLAB.

11. Spline Toolbox

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

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

Пакет Spline оснащен программами работы с В-сплайнами, описанными в работе «A Practical Guide to Splines» Карлом Дебуром, создателем сплайнов и автором пакета Spline. Функции пакета в сочетании с языком MATLAB и подробным руководством пользователя облегчают понимание сплайнов и их эффективное применение к решению разнообразных задач.

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

12. Statistics Toolbox

Statistics Toolbox

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

    описательная статистика;

    распределения вероятностей;

    оценка параметров и аппроксимация;

    проверка гипотез;

    множественная регрессия;

    интерактивная пошаговая регрессия;

    моделирование Монте-Карло;

    аппроксимация на интервалах;

    статистическое управление процессами;

    планирование эксперимента;

    моделирование поверхности отклика;

    аппроксимация нелинейной модели;

    анализ главных компонент;

    статистические графики;

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

Пакет включает 20 различных распределений вероятностей, включая t (Стъюдента), F и Хи-квадрат. Подбор параметров, графическое отображение распределений и способ вычисления лучших аппроксимаций предоставляются для всех типов распределений. Предусмотрено множество интерактивных инструментов для динамической визуализации и анализа данных. Имеются специализированные интерфейсы для моделирования поверхности отклика, визуализации распределений, генерации случайных чисел и линий уровня.

13. Optimization Toolbox

Optimization Toolbox

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

    безусловная оптимизация нелинейных функций;

    метод наименьших квадратов и нелинейная интерполяция;

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

    линейное программирование;

    квадратичное программирование;

    условная минимизация нелинейных функций;

    метод минимакса;

    многокритериальная оптимизация.

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

14. Partial Differential Equations Toolbox

Partial Differential Equations Toolbox

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

    полноценный графический интерфейс для обработки уравнений с частными производными второго порядка;

    автоматический и адаптивный выбор сетки;

    задание граничных условий: Дирихле, Неймана и смешанных;

    гибкая постановка задачи с использованием синтаксиса MATLAB;

    полностью автоматическое сеточное разбиение и выбор величины конечных элементов;

    нелинейные и адаптивные расчетные схемы;

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

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

15. Пакеты анализа и синтеза систем управления

Пакеты анализа и синтеза систем управления

Control System Toolbox

Пакет Control System предназначен для моделирования, анализа и проектирования систем автоматического управления - как непрерывных, так и дискретных. Функции пакета реализуют традиционные методы передаточных функций и современные методы пространства состояний. Частотные и временные отклики, диаграммы расположения нулей и полюсов могут быть быстро вычислены и отображены на экране. В пакете реализованы:

    полный набор средств для анализа MIMO-систем (множество входов - множество выходов) систем;

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

    частотные характеристики: диаграммы Боде, Николса, Найквиста и др.;

    разработка обратных связей;

    проектирование LQR/LQE-регуляторов;

    характеристики моделей: управляемость, наблюдаемость, понижение порядка моделей;

    поддержка систем с запаздыванием.

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

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

Пакет Control System содержит средства для выбора параметров обратной связи. Среди традиционных методов: анализ особых точек, определение коэффициента усиления и затухания. Среди современных методов: линейно-квадратичное регулирование и др. Пакет Control System включает большое количество алгоритмов для проектирования и анализа систем управления. Кроме того, он обладает настраиваемым окружением и позволяет создавать свои собственные m-файлы.

16. Nonlinear Control Design Toolbox

Nonlinear Control Design Toolbox

Nonlinear Control Design (NCD) Blockset реализует- метод динамической оптимизации для проектирования систем управления. Этот инструмент, разработанный для использования с Simulink, автоматически настраивает системные параметры, основываясь на определенных пользователем ограничениях на временные характеристики.

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

17. Robust Control Toolbox

Robust Control Toolbox

Пакет Robust Control включает средства для проектирования и анализа многопараметрических устойчивых систем управления. Это системы с ошибками моделирования, динамика которых известна не полностью или параметры которых могут изменяться в ходе моделирования. Мощные алгоритмы пакета позволяют выполнять сложные вычисления с учетом изменения множества параметров. Возможности пакета:

    синтез LQG-регуляторов на основе минимизации равномерной и интегральной нормы;

    многопараметрический частотный отклик;

    построение модели пространства состояний;

    преобразование моделей на основе сингулярных чисел;

    понижение порядка модели;

    спектральная факторизация.

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

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

Пакет Robust Control обеспечивает различные методы проектирования обратных связей, среди которых: LQR, LQG, LQG/LTR и др. Необходимость понижения порядка модели возникает в нескольких случаях: понижение порядка объекта, понижение порядка регулятора, моделирование больших систем. Качественная процедура понижения порядка модели должна быть численно устойчива. Процедуры, включенные в пакет Robust Control, успешно справляются с этой задачей.

18. Model Predictive Control Toolbox

Model Predictive Control Toolbox

Пакет Model Predictive Control содержит полный набор средств для реализации стратегии предиктивного (упреждающего) управления. Эта стратегия была разработана для решения практических задач управления сложными многоканальными процессами при наличии ограничений на переменные состояния и управление. Методы предикативного управления используются в химической промышленности и для управления другими непрерывными процессами. Пакет обеспечивает:

    моделирование, идентификацию и диагностику систем;

    поддержку MISO (много входов - один выход), MIMO, переходных характеристик, моделей пространства состояний;

    системный анализ;

    конвертирование моделей в различные формы представления (пространство состояний, передаточные функции);

    предоставление учебников и демонстрационных примеров.

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

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

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

19. мю - Analysis and Synthesis

(Мю)-Analysis and Synthesis

Пакет p-Analysis and Synthesis содержит функции для проектирования устойчивых систем управления. Пакет использует оптимизацию в равномерной норме и сингулярный параметр и. В этот пакет включен графический интерфейс для упрощения операций с блоками при проектировании оптимальных регуляторов. Свойства пакета:

  • проектирование регуляторов, оптимальных в равномерной и интегральной норме;
  • оценка действительного и комплексного сингулярного параметра мю;
  • D-K-итерации для приближенного мю -синтеза;

    графический интерфейс для анализа отклика замкнутого контура;

    средства понижения порядка модели;

    непосредственное связывание отдельных блоков больших систем.

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

20. Stateflow

Stateflow - пакет моделирования событийно-управляемых систем, основанный на теории конечных автоматов. Этот пакет предназначен для использования вместе с пакетом моделирования динамических систем Simulink. В любую Simulink-мо-дель можно вставить Stateflow-диаграмму (или SF-диаграмму), которая будет отражать поведение компонентов объекта (или системы) моделирования. SF-диаграмма является анимационной. По ее выделяющимся цветом блокам и связям можно проследить все стадии работы моделируемой системы или устройства и поставить ее работу в зависимость от тех или иных событий. Рис. 23.6 иллюстрирует моделирование поведения автомобиля при возникновении чрезвычайного обстоятельства на дороге. Под моделью автомобиля видна SF-диаграмма (точнее, один кадр ее работы).

Для создания SF-диаграмм пакет имеет удобный и простой редактор, а также средства пользовательского интерфейса.

21. Quantitative Feedback Theory Toolbox

Quantitative Feedback Theory Toolbox

Пакет содержит функции для создания робастных (устойчивых) систем с обратной связью. QFT (количественная теория обратных связей) - инженерный метод, использующий частотное представление моделей для удовлетворения различных требований к качеству при наличии неопределенных характеристик объекта. В основе метода лежит наблюдение, что обратная связь необходима в тех случаях, когда некоторые характеристики объекта неопределенны и/или на его вход подаются неизвестные возмущения. Возможности пакета:

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

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

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

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

    разрешение неопределенности в параметрах объекта с использованием параметрических и непараметрических моделей или комбинации этих типов моделей.

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

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

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

22. LMI Control Toolbox

LMI Control Toolbox

Пакет LMI (Linear Matrix Inequality) Control обеспечивает интегрированную среду для постановки и решения задач линейного программирования. Предназначенный первоначально для проектирования систем управления пакет позволяет решать любые задачи линейного программирования практически в любой сфере деятельности, где такие задачи возникают. Основные возможности пакета:

    решение задач линейного программирования: задачи совместности ограничений, минимизация линейных целей при наличии линейных ограничений, минимизация собственных значений;

    исследование задач линейного программирования;

    графический редактор задач линейного программирования;

    задание ограничений в символьном виде;

    многокритериальное проектирование регуляторов;

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

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

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

Пакет является мощным средством для решения выпуклых задач оптимизации, возникающих в таких областях, как управление, идентификация, фильтрация," структурное проектирование, теория графов, интерполяция и линейная алгебра. Пакет LMI Control включает два вида графического интерфейса пользователя: редактор задачи линейного программирования (LMI Editor) и интерфейс Magshape. LMI Editor позволяет задавать ограничения в символьном виде, a Magshape обеспечивает пользователя удобными средствами работы с пакетом.

23. Пакеты идентификации систем

Пакеты идентификации систем

System Identification Toolbox

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

    простой и гибкий интерфейс;

    предварительная обработка данных, включая предварительную фильтрацию, удаление трендов и смещений; О выбор диапазона данных для анализа;

    анализ отклика во временной и частотной области;

    отображение нулей и полюсов передаточной функции системы;

    анализ невязок при тестировании модели;

    построение сложных диаграмм, таких как диаграмма Найквиста и др.

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

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

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

24. Frequency Domain System Identification Toolbox

Frequency Domain System Identification Toolbox

Пакет Frequency Domain System Identification предоставляет специализированные средства для идентификации линейных динамических систем по их временному или частотному отклику. Частотные методы направлены на идентификацию непрерывных систем, что является мощным дополнением к более традиционной дискретной методике. Методы пакета могут быть применены к таким задачам, как моделирование электрических, механических и акустических систем. Свойства пакета:

    периодические возмущения, пик-фактор, оптимальный спектр, псевдослучайные и дискретные двоичные последовательности;

    расчет доверительных интервалов амплитуды и фазы, нулей и полюсов;

    идентификация непрерывных и дискретных систем с неизвестным запаздыванием;

    диагностика модели, включая моделирование и вычисление невязок;

    преобразование моделей в формат System Identification Toolbox и обратно.

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

25. Дополнительные пакеты расширения MATLAB

Дополнительные пакеты расширения MATLAB

Communications Toolbox

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

26. Digital Signal Processing (DSP) Blockset

Digital Signal Processing (DSP) Blockset

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

27. Fixed-Point Blockset

Fixed-Point Blockset

Этот специальный пакет ориентирован на моделирование цифровых систем управления и цифровых фильтров в составе пакета Simulink. Специальный набор компонентов позволяет быстро переключаться между вычислениями с фиксированной и плавающей запятой (точкой). Можно указывать 8-, 16- или 32-битовую длину слова. Пакет обладает рядом полезных свойств:

    применение беззнаковой или двоичной арифметики;

    выбор пользователем положения двоичной точки;

    автоматическая установка положения двоичной точки;

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

    переключение между вычислениями с фиксированной и плавающей точкой;

    коррекция переполнения и наличие ключевых компонентов для операций с фиксированной точкой; логические операторы, одно- и двумерные справочные таблицы.

28. Пакеты для обработки сигналов и изображений

Пакеты для обработки сигналов и изображений

Signal Processing Toolbox

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

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

    моделирование сигналов и линейных систем;

    проектирование, анализ и реализация цифровых и аналоговых фильтров;

    быстрое преобразование Фурье, дискретное косинусное и другие преобразования;

    оценка спектров и статистическая обработка сигналов;

    параметрическая обработка временных рядов;

    генерация сигналов различной формы.

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

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

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

    обобщенный метод Чебышева для создания фильтров с нелинейной фазовой характеристикой, комплексными коэффициентами или произвольным откликом. Алгоритм разработан Макленаном и Карамом в 1995 г.;

    метод наименьших квадратов с ограничениями позволяет пользователю явно контролировать максимальную ошибку (сглаживание);

    метод расчета минимального порядка фильтра с окном Кайзера;

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

Основанный на оптимальном алгоритме быстрого преобразования Фурье пакет Signal Processing обладает непревзойденными характеристиками для частотного анализа и спектральных оценок. Пакет включает функции для вычисления дискретного преобразования Фурье, дискретного косинусного преобразования, преобразования Гильберта и других преобразований, часто применяемых для анализа, кодирования и фильтрации. В пакете реализованы такие методы спектрального анализа как метод Вельха, метод максимальной энтропии и др.

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

Пакет Signal Processing является основой для решения многих других задач. Например, комбинируя его с пакетом Image Processing, можно обрабатывать и анализировать двумерные сигналы и изображения. В паре с пакетом System Identification пакет Signal Processing позволяет выполнять параметрическое моделирование систем во временной области. В сочетании с пакетами Neural Network и Fuzzy Logic может быть создано множество средств для обработки данных или выделения классификационных характеристик. Средство генерации сигналов позволяет создавать импульсные сигналы различной формы.

29. Higher-Order Spectral Analysis Toolbox

Higher-Order Spectral Analysis Toolbox

Пакет Higher-Order Spectral Analysis содержит специальные алгоритмы для анализа сигналов с использованием моментов высшего порядка. Пакет предоставляет широкие возможности для анализа негауссовых сигналов, так как содержит алгоритмы, пожалуй, самых передовых методов для анализа и обработки сигналов. Основные возможности пакета:

    оценка спектров высокого порядка;

    традиционный или параметрический подход;

    восстановление амплитуды и фазы;

    адаптивное линейное прогнозирование;

    восстановление гармоник;

    оценка запаздывания;

    блочная обработка сигналов.

Пакет Higher-Order Spectral Analysis позволяет анализировать сигналы, поврежденные негауссовым шумом, и процессы, происходящие в нелинейных системах. Спектры высокого порядка, определяемые в терминах моментов высокого порядка сигнала, содержат дополнительную информацию, которую невозможно получить, пользуясь только анализом автокорреляции или спектра мощности сигнала. Спектры высокого порядка позволяют:

    подавить аддитивный цветной гауссов шум;

    идентифицировать неминимально-фазовые сигналы;

    выделить информацию, обусловленную негауссовым характером шума;

    обнаружить и проанализировать нелинейные свойства сигналов.

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

30. Image Processing Toolbox

Image Processing Toolbox

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

    восстановление и выделение деталей изображений;

    работа с выделенным участком изображения;

    анализ изображения;

    линейная фильтрация;

    преобразование изображений;

    геометрические преобразования;

    увеличение контрастности важных деталей;

    бинарные преобразования;

    обработка изображений и статистика;

    цветовые преобразования;

    изменение палитры;

    преобразование типов изображений.

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

    интерактивная отладка при разработке графики;

    профилировщик для оптимизации времени выполнения алгоритма;

    средства построения интерактивного графического интерфейса пользователя (GUI Builder) для ускорения разработки GUI-шаблонов, позволяющие настраивать его под задачи пользователя.

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

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

Пакет Image Processing в настоящее время интенсивно используется в более чем 4000 компаниях и университетах по всему миру. При этом имеется очень широкий круг задач, которые пользователи решают с помощью данного пакета, например космические исследования, военные разработки, астрономия, медицина, биология, робототехника, материаловедение, генетика и т. д.

31. Wavelet Toolbox

Пакет Wavelet предоставляет пользователю полный набор программ для исследования многомерных нестационарных явлений с помощью вейвлетов (коротких волновых пакетов). Сравнительно недавно созданные методы пакета Wavelet расширяют возможности пользователя в тех областях, где обычно применяется техника Фурье-разложения. Пакет может быть полезен для таких приложений, как обработка речи и аудиосигналов, телекоммуникации, геофизика, финансы и медицина. Основные свойства пакета:

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

    преобразование многомерных непрерывных сигналов;

    дискретное преобразование сигналов;

    декомпозиция и анализ сигналов и изображений;

    широкий выбор базисных функций, включая коррекцию граничных эффектов;

    пакетная обработка сигналов и изображений;

    анализ пакетов сигналов, основанный на энтропии;

    фильтрация с возможностью установления жестких и нежестких порогов;

    оптимальное сжатие сигналов.

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

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

32. Прочие пакеты прикладных программ

Прочие пакеты прикладных программ

Financial Toolbox

Довольно актуальный для нашего периода рыночных реформ пакет прикладных программ по финансово-экономическим расчетам. Содержит множество функций по расчету сложных процентов, операций по банковским вкладам, вычисления прибыли и многое другое. К сожалению, из за многочисленных (хотя, в общем-то, не слишком принципиальных) различий в финансово-экономических формулах его применение в наших условиях не всегда разумно - есть множество отечественных программ для таких расчетов, - например «Бухгалтерия 1C». Но если вы хотите подключиться к базам данных агентств финансовых новостей - Bloom-berg, IDC через пакет Datafeed Toolbox MATLAB, то, конечно, обязательно пользуйтесь и финансовыми пакетами расширения MATLAB.

Пакет Financial является основой для решения в MATLAB множества финансовых задач, от простых вычислений до полномасштабных распределенных приложений. Пакет Financial может быть использован для расчета процентных ставок и прибыли, анализа производных доходов и депозитов, оптимизации портфеля инвестиций. Основные возможности пакета:

    обработка данных;

    дисперсионный анализ эффективности портфеля инвестиций;

    анализ временных рядов;

    расчет доходности ценных бумаг и оценка курсов;

    статистический анализ и анализ чувствительности рынка;

    калькуляция ежегодного дохода и расчет денежных потоков;

    методы начисления износа и амортизационных отчислений.

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

Алгоритмы пакета Financial для расчета показателей движения денежных средств и других данных, отражаемых в финансовых счетах, позволяют вычислять, в частности, процентные ставки по займам и кредитам, коэффициенты рентабельности, кредитные поступления и итоговые начисления, оценивать и прогнозировать стоимость инвестиционного портфеля, вычислять показатели износа и т. п. Функции пакета могут быть использованы с учетом положительного и отрицательного денежных потоков (cash-flow) (превышения денежных поступлений над платежами или денежных выплат над поступлениями соответственно).

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

33. Mapping Toolbox

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

    визуализация, обработка и анализ графических и научных данных;

    более 60 проекций карт (прямые и инверсные);

    проектирование и отображение векторных, матричных и составных карт;

    графический интерфейс для построения и обработки карт и данных;

    глобальные и региональные атласы данных и сопряжение с правительственными данными высокого разрешения;

    функции географической статистики и навигации;

    трехмерное представление карт со встроенными средствами подсветки и затенения;

    конвертеры для популярных форматов географических данных: DCW, TIGER, ЕТОРО5.

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

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

Наиболее широко известные атласы мира, Соединенных Штатов, астрономические атласы входят в состав пакета. Географическая структура данных упрощает извлечение и обработку данных из атласов и карт. Географическая структура данных и функции взаимодействия с внешними географическими данными форматов Digital Chart of the World (DCW), TIGER, TBASE и ЕТОРО5 собраны воедино, чтобы обеспечить мощный и гибкий инструмент для доступа к уже существующим и будущим географическим базам данных. Тщательный анализ географических данных часто требует математических методов, работающих в сферической системе координат. Пакет Mapping снабжен подмножеством географических, статистических и навигационных функций для анализа географических данных. Функции навигации дают широкие возможности для выполнения задач перемещения, таких как позиционирование и планирование маршрутов.

34. Power System Blockset

Data Acquisition Toolbox и Instrument Control Toolbox

Data Acquisition Toolbox - пакет расширения, относящийся к области сбора данных через блоки, подключаемые к внутренней шине компьютера, функциональных генераторов, анализаторов спектра - словом, приборов, широко используемых в исследовательских целях для получения данных. Они поддержаны соответствующей вычислительной базой. Новый блок Instrument Control Toolbox позволяет подключать приборы и устройства с последовательным интерфейсом и с интерфейсами Канал общего пользования и VXI.

36. Database toolbox и Virtual Reality Toolbox

Database toolbox и Virtual Reality Toolbox

Более чем в 100 раз повышена скорость работы Database toolbox, при помощи которого осуществляется обмен информацией с целым рядом систем управления базами данных через драйверы ODBC или JDBC:

  • Access 95 или 97 Microsoft;

    Microsoft SQL Server 6.5 или 7.0;

    Sybase Adaptive Server 11;

    Sybase (бывший Watcom) SQL Server Anywhere 5.0;

    IBM DB2 Universal 5.0;

  • Computer Associates Ingres (все версии).

Все данные предварительно преобразуются в массив ячеек в MATLAB 6.0. В MATLAB 6.1 можно использовать и массив структур. Визуальный конструктор (Visual Query Builder) позволяет составлять сколь угодно сложные запросы на диалектах языка SQL этих баз данных даже без знания SQL. В одном сеансе может быть открыто много неоднородных баз данных.

Пакет Virtual Reality Toolbox доступен начиная с версии MATLAB 6.1. Позволяет осуществлять трехмерную анимацию и мультипликацию, в том числе моделей Simulink. Язык программирования - VRML - язык моделирования виртуальной реальности (Virtual Reality Modeling Language). Просмотр анимации возможен с любого компьютера, оснащенного браузером с поддержкой VRML. Подтверждает, что математика - наука о количественных соотношениях и пространственных формах любых действительных или виртуальных миров.

37. Excel Link

Позволяет использовать Microsoft Excel 97 как процессор ввода-вывода MATLAB. Для этого достаточно установить в Excel как add-in функцию поставляемый Math Works файл excllinkxla. В Excel нужно набрать Сервис > Надстройки > Обзор, выбрать файл в каталоге \matlabrl2\toolbox\exlink и установить его. Теперь при каждом запуске Excel появится командное окно MATLAB, а панель управления Excel дополнится кнопками getmatrix, putmatrix, evalstring. Для закрытия MATLAB из Excel достаточно набрать =MLC1ose() в любой ячейке Excel. Для открытия после выполнения этой команды нужно либо щелкнуть мышью на одной из кнопок getmatrix, putmatrix, evalstring, либо набрать в Excel Сервис > Макрос >Выполнить mat! abi ni t. Выделив мышью диапазон ячеек Excel, вы можете щелкнуть на getmatrix и набрать имя переменной MATLAB. Матрица появится в Excel. Заполнив числами диапазон ячеек Excel, вы можете выделить этот диапазон, щелкнуть на putmatrix и ввести имя переменной MATLAB. Работа, таким образом, интуитивно понятна. В отличие от MATLAB Excel Link не чувствителен к регистру: I и i, J и j равноценны.

Вызывать демонстрационные примеры пакетов расширения.

Справочник свойств графических объектов

Стандартные диалоговые окна.

Функции для создания диалоговых окон

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

Диалоговые окна сообщений:

errordlg - создание диалогового окна с сообщением об ошибке;

helpdlg - создание диалогового окна для вывода информации;

warndlg - создание диалогового окна предупреждения;

msgbox - создание диалогового окна для вывода сообщения.

Диалоговое окно подтверждения (функция questdlg)

Диалоговое окно для ввода информации (функция inputdlg)

Диалоговое окно для выбора из списка (функция listdlg)

Диалоговые окна для заданий опций печати

pagesetupdlg - вывод многостраничного диалогового окна для установки параметров листа и способа печати содержимого графического окна;

printdlg - отображение диалогового окна для выбора опций печати и настройки принтера.


Диалоговые окна открытия и сохранения файла

uigetfile - отображение диалогового окна открытия файла

uiputfile - отображение диалогового окна сохранения файла


Диалоговое окно выбора каталога (функция uigetdir)

Диалоговое окно выбора шрифта (функция uisetfont)

Диалоговое окно выбора цвета (функция uisetcolor)

Окно с полосой прогресса (функция waitbar)

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

Рассмотрим использование стандартных диалоговых окон на примере окна открытия файла.

Пример приложения myview с диалоговым окном открытия файла

Создадим приложение myview с графическим интерфейсом пользователя, которое позволяет просматривать графические файлы. Окно работающего приложения приведено на рис. 1. Нажатие на кнопку Open Image приводит к появлению стандартного диалогового окна открытия файла Select File to Open. Выбранный в нем графический файл отображается в окне приложения. Нажатие на кнопку Close Image очищает окно приложения myview.

Рис. 1. Окно приложения myview.

В среде GUIDE на заготовке окна приложения разместите оси и две кнопки так, как показано на рис.2. В инспекторе свойств задайте левой кнопке тег btnOpen и установите ее свойство String в Open Image. Аналогично для правой кнопки: тег - btnClose и String - Close Image.

Оси понадобятся для вывода изображения при помощи функции image. Мы будем использовать низкоуровневое обращение к функции image, которое предполагает обратное направление оси y для того, чтобы рисунок не был перевернут. Поэтому в инспекторе свойств измените направление оси y , установив свойство осей YDir в reverse. Для того, чтобы скрыть координатную разметку и линии осей, сделайте оси невидимыми, установив их свойство Visible в off.

Рис. 2. Заготовка окна приложения в среде GUIDE.

Сохраните приложение с именем myview и запрограммируйте события Callback кнопок Open Image и Close Image.

При нажатии пользователем на Open Image должен появляться диалог открытия файла и после выбора файла рисунок должен отображаться на осях. Воспользуемся стандартным диалоговым окном открытия файла, которое создает функция uigetfile. Самое простое обращение к ней выглядит следующим образом:

Uigetfile

Если пользователь выбрал файл и закрыл окно, нажав в нем кнопку Open, то в первом выходном аргументе FileName возвращается имя файла (с расширением), а во втором PathName - путь к файлу. Если же пользователь не выбрал файл (нажал Cancel, или закрыл окно кнопкой с крестиком на заголовке окна, или нажал ), то переменная FileName будет равна нулю. Поэтому дальнейшие действия зависят от значения FileName.

Если файл был выбран, то следует

1) сформировать полное имя файла;

3) вывести изображение на оси, воспользовавшись функцией image.

Если файл не был выбран, то и делать ничего не надо.

Событие Callback кнопки Close Image может состоять всего из одного оператора - обращения к функции cla для очистки осей.

Запрограммируйте подфункции обработки события Callback кнопок Open Image и Close Image следующим образом.

Function btnOpen_Callback(hObject, eventdata, handles) % Обработка события Callback кнопки Open Image % Получение имени и пути к файлу = uigetfile; % Проверка, был ли выбран файл if FileName~=0 % Формирование полного пути к файлу FullName = ; % Считывание изображения из графического файла Pict = imread(FullName); % Вывод изображения на оси image("CData", Pict) end function btnClose_Callback(hObject, eventdata, handles) % Обработка события Callback кнопки Close Image % Очистка осей cla

Запустите приложение myview. При нажатии на кнопку Open Image появляется диалоговое окно открытия файла Select File to Open. Однако, в поле, в котором отображается содержимое текущей папки не видно графических файлов. Так происходит потому, что по умолчанию фильтр файлов (раскрывающийся список Files of type) содержит строку "All MATLAB Files" и видны файлы только с теми расширениями, которые приняты в MATLAB. Разумеется, можно каждый раз при открытии графического файла выбирать в раскрывающемся списке Files of type строку "All Files (*.*)" для отображения всех файлов текущей папки. Но гораздо лучше сразу создавать диалоговое окно открытия файла, настроенное на определенные расширения. Например, для отображения файлов с расширениями bmp и jpg следует обратиться к функции uigetfile со входным аргументом - строкой, в которой через точку с запятой записаны шаблоны с нужным расширением *.bmp и *.jpg:

Uigetfile("*.bmp;*.jpg");

Измените в подфункции btnOpen_Callback обращение к uigetfile на вышеприведенное и убедитесь, раскрывающийся список Files of type диалогового окна открытия файлов содержит всего две строки: "*.bmp;*.jpg" (по умолчанию) и "All Files (*.*)".

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

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

В этом разделе мы рассмотрим два вопроса:

1) как организовать выбор нескольких файлов в стандартном окне открытия файла и считать их содержимое в подходящий массив;

Ответ на первый вопрос простой. Надо вызвать функцию uigetfile с дополнительной парой входных аргументов "MultiSelect" и "on":

Uigetfile(..., "MultiSelect", "on")

В зависимости от выбора пользователя выходные аргументы будут следующих типов.

  • Если в диалоговом окне открытия файла пользователь выбрал несколько файлов (выделением мышью или щелчком мыши с удержанием или ), то FileName станет массивом ячеек, каждая ячейка которого содержит строку с именем файла (и расширением), а PathName будет строкой, в которой записан путь к этим файлам (путь ко всем файлам один и тот же, поэтому PathName не должен быть массивом ячеек).
  • Если в диалоговом окне открытия файла пользователь выбрал один файл, то FileName будет строкой с именем файла (с расширением), а PathName - строкой с путем к файлу (см. предыдущий раздел).
  • Если выбор не был сделан, то FileName равно нулю.

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

guidata(gcbo, handles)

Для получения данных в другой подфункции следует обратиться к соответствующему полю структуры handles. Например, в приложении есть две подфункции btnA_Callback и btnB_Callback. При выполнении подфункции btnA_Callback был создан числовой массив, который понадобится в подфункции btnB_Callback. Тогда эти подфункции должны иметь следующий вид.

Function btnA_Callback(hObject, eventdata, handles) . . . handles.data = ; guidata(gcbo, handles) . . . function btnB_Callback(hObject, eventdata, handles) . . . bar(handles.data) . . .

Обратимся к приложению myview, созданному в предыдущем разделе, и расширим его возможности. Модернизированное приложение должно позволять открытие сразу нескольких графических файлов и их поочередный просмотр. После выбора нескольких графических файлов в окне приложения отображается только один, а нажатие на кнопку (назовем ее Next) приводит к появлению следующего изображения.

В среде GUIDE на заготовку окна приложения myview (см. рис.2 предыдущего раздела) добавьте кнопку c тегом btnNext и надписью Next (см. рис. 1). В инспекторе свойств сделайте ее недоступной, установив свойство Enable в off. Она будет доступной в ходе работы приложения, если пользователь выбрал для просмотра несколько графических файлов.

Рис. 1. Окно приложения myview с кнопкой Next

Теперь надо изменить подфункцию btnOpen_Callback обработки события Callback кнопки Open Image и запрограммировать событие Callback кнопки Next. При обработке выбора файлов (или файла) пользователем в диалоговом окне открытия файла следует учесть все возможности: выбрано несколько файлов, выбран только один файл, файлы не выбраны.

Если выбрано несколько графических файлов (т.е. массив FileName является массивом ячеек), то считаем изображения в массив ячеек и сохраним его в поле Pict структуры handles. Число открытых графических файлов (т.е. длину массива FileName) сохраним в поле ImageNum структуры handles. Кроме того, нам понадобится номер текущего изображения, для запоминания которого создадим поле CurImage структуры handles.

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

При обработке события Callback кнопки Next очистим оси и отобразим на них следующее изображение. Если текущее изображение является последним, то отобразим первое.

Ниже приведен текст подфункций btnOpen_Callback и btnNext_Callback. Подфункция btnClose_Callback остается без изменений.

Function btnOpen_Callback(hObject, eventdata, handles) % Обработка события Callback кнопки Open Image % Получение имен файлов и пути к ним (или имени одного файла и пути к нему) = uigetfile("*.bmp;*.jpg", "MultiSelect", "on"); % Узнаем, сколько выбрано файлов if iscell(FileName) % FileName - массив ячеек, значит выбрано несколько файлов % записываем в поле ImageNum структуры handles число выбранных файлов handles.ImageNum = length(FileName); % Для каждого файла в цикле формируем полное имя % и считываем его содержимое в k-ую ячейку массива ячеек, % который хранится в поле Pict структуры handles handles.Pict = ; % сначала делаем массив пустым for k=1:handles.ImageNum FullName = ; handles.Pict{k} = imread(FullName); end % Первая картинка является текущей handles.CurImage = 1; % Отображаем ее на осях image("CData", handles.Pict{handles.CurImage}) % Сохраняем структуру handles для доступа к ней в подфункции btnNext_Callback guidata(gcbo, handles) % Делаем доступной кнопку Next set(handles.btnNext, "Enable", "on") else % Был выбран только один файл или ни одного if FileName~=0 % Выбран один файл, формируем полный путь к нему FullName = ; % Считываем изображение в переменную Pict (структура handles не нужна) Pict = imread(FullName); % Выводим картинку на оси image("CData", Pict) % Делаем кнопку Next недоступной set(handles.btnNext, "Enable", "off") end end function btnNext_Callback(hObject, eventdata, handles) % Обработка события Callback кнопки Open Image % Проверяем, какая картинка является текущей if handles.CurImage

Примечание

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

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

Создание диалогового окна с сообщением об ошибке - errordlg

Для создания стандартного диалогового окна с сообщением об ошибке служит функция errordlg. Самый распространенный вариант вызова

h = errordlg("Текст сообщения", "Заголовок окна").

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

h = errordlg("Division by zero", "Calculator");

Приводит к такому окну с указателем h:

Окно остается на экране до тех пор, пока его не закроют кнопкой OK, клавишей, кнопкой с крестиком на заголовке или при помощи контекстного меню заголовка.

Окно с сообщением об ошибке не является модальным (оно позволяет переходить к другим окнам приложений MATLAB). Для того, чтобы сделать его модальным, следует после создания окна функцией errordlg установить свойство WindowStyle графического окна в "modal": set(h, "WindowStyle", "modal")

Другой способ создания модального окна с сообщением об ошибке состоит в использовании функции msgbox, которая описана ниже.

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

h = errordlg({"Wrong data format";"or"; "unmatched data"}, "dlgname")

Последовательное создание окон с сообщениями об ошибке с одним и тем же заголовком:

h = errordlg("Division by zero", "Calculator"); ... h = errordlg("Incorrect operation", "Calculator");

приводит к созданию разных окон с сообщениями об ошибке. Для активизации окна (расположения поверх остальных окон) и вывода в него нового сообщения, вместо создания нового окна, предусмотрен вызов errordlg с третьим аргументом "on":

h = errordlg("Division by zero", "Calculator"); ... h = errordlg(" Incorrect operation ", "Calculator", "on"); % активизация старого окна

Разумеется, если старое окно было закрыто, то h = errordlg(..., "on") просто создает новое.

После вывода диалогового окна с сообщением об ошибке выполнение приложения продолжается. Часто возникает вопрос: как приостановить выполнение до тех пор, пока диалоговое окно не будет закрыто. Это делается при помощи функции waitfor, которая приостанавливает выполнение приложения, пока не будет удален определенный графический объект. Указатель на этот объект (в нашем случае - окно с сообщением об ошибке) указывается в качестве входного аргумента функции waitfor:

h = errordlg("Division by zero", "Calculator"); set(h, "WindowStyle", "modal") waitfor(h) a=1; ....

Создание диалогового окна с предупреждением - warndlg

Функция warndlg работает практически так же, как и errordlg (см. выше), но не предусмотрен вариант вызова с третьим входным аргументом "on". Например,

приводит к такому окну с указателем h

Окно с предупреждение отличается от окна с сообщением об ошибке только пиктограммой:

Повторный вызов warndlg с теми же самыми входными аргументами приводит к созданию нового окна, даже если старое еще не было закрыто.

Создание диалогового окна со справочной информацией - helpdlg

Функция helpdlg работает в основном так же, как и warndlg (см. выше). Например,

h = warndlg("File is out of date", "Preprocessor")

приводит к такому окну с указателем h:

которое отличается от окна с предупреждением только пиктограммой:

Повторный вызов helpdlg с тем же самым заголовком окна приводит к активизации старого окна, если оно не было закрыто. Если оно было закрыто, то создается новое.

Многострочный текст сообщения, модальность окна и приостановление выполнения приложения до закрытия окна - все это делается так же, как и при вызове errordlg.

Создание окна с сообщением - универсальная функция msgbox

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

h = msgbox("Very serious error!", "Program", "error") - создает окно с сообщением об ошибке и стандартной пиктограммой (аналогично errordlg).

c = {"Very serious error!"; "Don""t tell anyone"}; h = msgbox(c, "Program", "error") - аналогично предыдущему, но сообщение состоит из двух строк.

h = msgbox("The last warning!", "Program", "warn") - создает окно с предупреждением и стандартной пиктограммой (аналогично warndlg).

h = msgbox("Help yourself...", "Program", "help") - создает окно со справочной информацией и стандартной пиктограммой (аналогично helpdlg).

h = msgbox("Here is no picture", "Program", "none") - создает окно с текстовой информацией без пиктограммы.

h = msgbox("Текст сообщения", "Заголовок окна", "custom", рисунок, карта цветов) - создает окно с пиктограммой пользователя, например:

= imread("phone.gif"); % считывание рисунка и карты цветов из файла h = msgbox("Someone is calling you", "Phone", "custom", pic, map)

приводит к такому окну

Последний входной аргумент ("modal", "non-modal" или "replace") управляет видом окна и способом вывода нового окна с тем же заголовком. Если способ вывода нового окна не указан, то всегда создается новое окно.

Примеры:

h = msgbox("Very serious error!", "Program", "modal") - выводит модальное стандартное окно с сообщением об ошибке

h = msgbox("Someone is calling you", "Phone", "custom", pic, map, "modal") - выводит модальное окно с заданным рисунком для пиктограммы и картой цветов.

h = msgbox("Very serious error!", "Program", "error", "replace") - заменяет предыдущее окно с заголовком Program, если такого нет, то создает новое. При выполнении команд

h = msgbox("Very serious error!", "Program", "error") h = msgbox("Something is strange", "Program", "warn", "replace")

второе окно заменит первое.

Диалоговое окно подтверждения - функция questdlg

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

Примеры:

button = questdlg("Are you sure?") - создание стандартного окна подтверждения с кнопками Yes, No, Cancel. Кнопка Yes в фокусе (по умолчанию).

button = questdlg("Are you sure?", "Program") - создание стандартного окна подтверждения с заголовком и с кнопками Yes, No, Cancel.

button = questdlg("Are you sure?", "Program", "No") - создание стандартного окна подтверждения с заголовком и с кнопками Yes, No, Cancel. В фокусе кнопка No.

button = questdlg("Are you sure?", "Program", "Yes", "Maybe", "Maybe") - создание стандартного окна подтверждения с заголовком и с двумя кнопками Yes и Maybe. В фокусе кнопка Maybe.

button = questdlg("Are you sure?", "Program", "Yes", "No", "I don""t know", "No") - создание стандартного окна подтверждения с заголовком и с тремя кнопками Yes, No и I don"t know. В фокусе кнопка No.

Диалоговое окно для ввода информации (функция inputdlg)

Функция inputdlg создает диалоговое окно с заданным числом строк ввода. Число строк ввода и заголовки к ним определяются при помощи входных аргументов. Окно содержит кнопки OK и Cancel. Если пользователь нажал OK, то выходной аргумент функции inputdlg является массивом ячеек с информацией, введенной пользователем в строки ввода. Если окно было закрыто нажатием на кнопку Cancel или любым другим способом (кроме кнопки OK), то выходной аргумент - пустой массив ячеек.

Примеры:

M = inputdlg({"TIME" "VALUES"}) - создает диалоговое окно

Если, к примеру, в строке TIME пользователь ввел 0.1 0.3 0.55 4.5, а в строке VALUES - 2.3 9.55 2.1 0.7 и нажал OK, то массив ячеек M будет иметь следующие значения.

M = "0.1 0.3 0.55 4.5" "-2.3 9.55 2.1 0.7"

Для преобразования их в числовые векторы можно воспользоваться str2num:

time = str2num(M{1}) val = str2num(M{2})

M=inputdlg({"TIME" "VALUES"}, "Input Data") - создает диалоговое окно с заголовком Input Data.

Для того, чтобы можно было вводить многострочный текст, следует указать третий входной аргумент - число строк в каждой области ввода:

M = inputdlg({"matrix A" "Matrix B"}, "Input Data", 3) - если третий аргумент является числом большим единицы, то все области ввода имеют одинаковую высоту и снабжены полосами прокрутки.

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

M = inputdlg({"vector A" "Matrix B"}, "Input Data", ) - для задания высоты областей ввода по отдельности следует указывать число строк каждой области ввода в вектор-столбце в качестве третьего входного аргумента:

M = inputdlg({"vector A" "Matrix B"}, "Input Data",) - для задания длины областей ввода в символах (в данном случае, 100 символов) третьим входным аргументом должна быть матрица:


M = inputdlg({"Name" "Year"}, "Info", , {char("John","Smith") "1990"}) - для получения окна с заполненными полями (для подсказки формата ввода пользователю) указывается четвертый входной аргумент. Он должен быть массивом ячеек того же размера, что и первый входной аргумент:

M = inputdlg({"Name" "Year"}, "Info", , {char("John","Smith") "1990"}, "on") - последний пятый входной аргумент "on" означает, что пользователь может изменять размеры диалогового окна.

Диалоговое окно для выбора из списка - функция listdlg

Функция listdlg создает диалоговое окно со списком из заданных строк и кнопками для выбора и отмены. Строки списка задаются массивом ячеек. Поддерживается выбор нескольких элементов списка. В выходных аргументах возвращаются: Selection - номер или вектор с номерами выбранных строк и ok - информация о том, был ли выбор завершен нажатием кнопки OK (ok = 1), или окно было закрыто другим способом (ok = 0). Если ok = 0, то Selection - пустой массив. По умолчанию допускается выбор нескольких элементов списка (щелчком мыши с удержанием Ctrl) и присутствует кнопка Select All для выбора всех элементов.

= listdlg("ListString", {"Linear"; "Quadratic"; "Cubic"}) - создает диалоговое окно выбора со списком из трех строк: Linear, Quadratic, Cubic. Если пользователь выбрал, к примеру Quadratic и нажал кнопку OK, то Selection = 2 и ok = 1. Если пользователь выбрал Linear и Cubic и нажал кнопку OK, то Selection = и ok = 1 и т. д.

Функция listdlg допускает обращение к ней в общей форме:

= listdlg("ListString", массив ячеек строк, парам1, знач1, парам2, знач2, ...)

Параметры и их возможные значения такие:

  • "SelectionMode" - режим выбора строк в списке, значения: "single" (для выбора только одной строки) или "multiple" (по умолчанию, для выбора нескольких строк);
  • "ListSize" - размер области списка в пикселях, значение задается вектором [ширина высота] (по умолчанию );
  • "InitialValue" - начальное выделение строк, значением является вектор с номерами строк, которые будут выделены при отображении окна со списком (по умолчанию 1);
  • "Name" - заголовок окна, значение задается строкой (по умолчанию пустая строка);
  • "PromptString" - текст над списком, значения: строка или массив строк или ячеек из строк (для многострочного текста). По умолчанию пустой массив ячеек.
  • "OKString" - надпись на кнопке для выбора и закрытия окна, значением является строка (по умолчанию "OK");
  • "CancelString" - надпись на кнопке для закрытия окна без выбора, значением является строка (по умолчанию "Cancel");
  • "uh" - высота кнопок окна, значение задается в пикселях (18 по умолчанию);
  • "fus" - расстояние между кнопками и списком, значение задается в пикселях (18 по умолчанию);
  • "ffs" - расстояние от границы окна до списка, значение задается в пикселях (8 по умолчанию).
Например, команда

= listdlg("ListString", {"Linear"; "Quadratic"; "Cubic"},... "Name", "Approximation", "ListSize", , "PromptString", "Select method", "fus", 5)

приводит к созданию следующего диалогового окна со списком:

Диалоговое окно для установки параметров листа и способа печати содержимого графического окна - функция pagesetupdlg

pagesetupdlg - вызов диалогового окна Page Setup для текущего графического окна (если нет ни одного окна, то создается новое).

pagesetupdlg(hF) - вызов диалогового окна Page Setup для графического окна с указателем hF.

Настройки, сделанные в диалоговом окне Page Setup, влияют на соответствующие свойства графического окна: PaperSize, PaperType, PaperPozition и т. д.

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

Окно Page Setup является модальным, выполнение приложения приостанавливается до тех пор, пока окно не будет закрыто.

Диалоговое окно для выбора опций печати и настройки принтера - функция printdlg

printdlg - вызов стандартного диалогового окна Windows для печати текущего графического окна (если нет ни одного окна, то создается новое).

printdlg(hF) - вызов стандартного диалогового окна Windows для печати графического окна с указателем hF.

printdlg("-crossplatform", hF) - вызов диалогового окна Print MATLAB для печати графического окна с указателем hF.

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

Диалоговое окно открытия файла - функция uigetfile

= uigetfile - выводит диалоговое окно открытия файла с содержимым текущего каталога. Фильтр файлов установлен в ALL MATLAB files, что приводит к отображению только тех файлов, расширения которых поддерживаются MATLAB. В раскрывающемся списке Files of type можно выбрать только M-файлы, или только графические окна и т. д., или все файлы.

Если пользователь выбрал файл (щелчком мыши по значку с файлом и нажал кнопку Open, либо двойным щелчком мыши по значку с файлом, либо набрал имя файла в строке File Name и нажал кнопку Open), то FName содержит строку с именем файла и расширением, а PName - путь к файлу. Если пользователь не выбрал файл и закрыл окно, то FName = 0 и PName = 0. После обращения к функции uigetfile следует проверить, был ли выбран файл. Если да, то для получения полного имени файла следует сцепить эти строки:

= uigetfile; if ~ isequal(FName, 0) FullName = strcat(PName, FName); % дальше считываем данные из файла end

Фильтр файлов указывается в первом входном аргументе функции uigetfile, например

= uigetfile("*.txt");

создает диалоговое окно открытия файлов, список Files of Type которого содержит две строки: "*.txt" и "All Files (*.*)". Можно указывать больше одного расширения, но тогда надо использовать массив ячеек из строк:

= uigetfile({"*.txt"; "*.dat"});

Для размещения описания типов файлов в списке Files of Type следует указывать массив ячеек из двух столбцов. В каждой его строке задается расширение файла и его описание (при этом строка "All Files (*.*)" не добавляется в список Files of Type диалогового окна открытия файла):

Filter={"*.txt", "Text files (*.txt)"; "*.dat", "Data files (*.dat)"; "*.res", "Results (*.res)"}; = uigetfile(Filter);

В качестве фильтра может быть и строка с именем файла, тогда оно находится в строке File name при появлении диалогового окна открытия файла, а его расширение принимается за расширение по умолчанию и появляется в списке Files of Type вместе с "All Files (*.*)".

Если необходимо узнать, какой по счету тип файлов пользователь выбрал в списке Files of Type, то следует обратиться к uigetfile с тремя выходными аргументами:

= uigetfile(Filter);

В FilterIndex записывается номер типа файлов.

Для задания собственного заголовка окна открытия файла (вместо Select File to Open) функция uigetfile вызывается со вторым входным аргументом:

= uigetfile(Filter, "Open File");

А для помещения заданного имени файла в строку File Name при создании окна открытия файлов, необходимо указать его в третьем входном аргументе (имя файла может быть полным):

= uigetfile(Filter, "Open File", "input.txt")

Так можно отобразить содержимое любой папки, например корневого каталога диска D:

= uigetfile(Filter, "Open File", "d:\")

Примечание
Если мы хотим открывать файлы MATLAB так, как предлагает uigetfile по умолчанию, но задать собственный заголовок окна (и папку или файл, предлагаемые по умолчанию в диалоговом окне открытия файлов), то первый входной аргумент - фильтр - пропускать нельзя. Он должен быть пустой строкой:

= uigetfile("", "Open File", "d:\");

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

= uigetfile("MultiSelect", "on"); или = uigetfile("*.dat", "MultiSelect", "on") ; или = uigetfile("*.dat", "Open File", "d:\", "MultiSelect", "on")

Если пользователь выбрал несколько файлов в диалоговом окне, то выходной аргумент FName является массивом ячеек из имен выбранных файлов (PName, разумеется, остается строкой, так как файлы выбирались в одной папке). Для получения массива ячеек с полными именами файлов подойдет следующий код (функция strcat умеет сцеплять строку с массивом ячеек из строк):

= uigetfile("MultiSelect", "on"); if ~isequal(FName, 0) FullName = strcat(PName, FName); end

Функции MATLAB для открытия файлов разных форматов

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

load - чтение данных из двоичного или текстового файла.

open - открытие файла. Способ открытия зависит от расширения:

  • расширение m - файл открывается в редакторе M-файлов;
  • расширение mdl - модель открывается в Simulink;
  • расширение mat - запись двоичных данных из файла в поля структуры, имена полей структуры совпадают с именами переменных, записанных в файле;
  • расширение fig - открывается графическое окно;
  • расширение p - если существует m-файл с тем же самым именем, то он открывается в редакторе M-файлов;
  • расширения htm, html - файл открывается в окне браузера справочной системы MATLAB;
  • расширение pdf - файл открывается в Adobe Acrobat (требуется установка открытия по ассоциации в Windows);
Для открытия файла с нестандартным расширением можно написать свою функцию, которая будет вызываться по умолчанию. Ее имя образуется из слова open и расширения, например для открытия файлов с расширением dtm следует написать функцию opendtm. Пример. Пусть надо открывать двоичные файлы с расширением dtm, содержащие значения двух переменных, имена которых могут быть разными. Значения этих переменных должны быть записаны в переменные time и data рабочей среды. Тогда пишем файл-функцию opendtm:

function opendtm(fname) % считываем данные в структуру S = load("-mat", fname); % узнаем названия полей структуры (имена переменных) F = fieldnames(S); % Присваиваем значения переменным time и data рабочей среды assignin("base", "time", S.(F{1})) assignin("base", "data", S.(F{2}))

Вот как можно использовать функцию opendtm:

A = 1:10; B = sqrt(A); save("my.dtm", "A", "B") % запись A и B в файл в двоичном виде open("my.dtm") % open вызывает opendtm и в рабочей среде создаются time и data

Примечание. Функция uiopen сочетает возможности uigetfile и open - она создает диалоговое окно открытия файла, а затем вызывает open для его открытия.

winopen - открытие файла в Windows тем приложением, которое ассоциировано с данным расширением, например: winopen("art.doc") - открытие art.doc в MS Word; winopen("my.txt") - открытие my.txt в блокноте; winopen("all.htm") - открытие all.htm в браузере интернет-страниц.

notebook - открытие или создание M-книги в MS Word.

publish - выполнение M-файла, разбитого на ячейки, и сохранение результата в указанном формате: html, doc, ppt, xml, rpt, latex.

dos и system - выполнение команд (см. также!), запуск исполняемых файлов, например:

system("calc") - запуск калькулятора.

uiimport - открывает окно Import Wizard для импортирования данных из различных форматов.

importdata - импорт данных в зависимости от расширения файла, полезна также для чтения данных из текстового файла с разделителями.

csvread - чтение числовых данных из текстового файла с разделителем-запятой.

dlmread - чтение числовых данных из текстового файла с заданным разделителем.

textread, textscan - чтение данных из текстового файла, имеющего определенный формат.

xlsread - чтение данных из фалов MS Excel.

wavread - чтение звукового wav-файла.

aviread - чтение avi-файла.

imread - чтение графических файлов.

Кроме перечисленных функций имеются низкоуровневые функции для работы с файлами. Их имена начинаются с буквы f:

fclose - закрытие файла.

feof - проверка на достижение конца файла.

ferror - получение информации о последней ошибке при вводе-выводе.

fgetl - чтение строки из текстового файла без символа конца строки.

fgets - чтение строки из текстового файла с символом конца строки.

fopen - открытие файла.

fprintf - форматная запись в файл.

fread - чтение из двоичного файла.

frewind - переход к началу файла.

fscanf - форматное чтение из файла.

fseek - переход к заданной позиции в файле.

ftell - получение текущей позиции в файле.

fwrite - запись в двоичный файл.

Все функции для чтения данных приведены в разделе справочной системы: MATLAB: Functions -- Categorical List: File I/O.

Диалоговое окно сохранения файла - функция uiputfile

Использование uiputfile схоже с uigetfile, рассмотренной выше. Точно так же задаются фильтр расширений, заголовок окна, файл или путь по умолчанию. Отличие состоит в том, что в uiputfile нет опции "MultiSelect" (она и не нужна при сохранении). Кроме того, если в диалоговом окне сохранения файла пользователь выберет имя существующего файла, то появится окно подтверждения. Выбор Yes приводит к завершению диалога сохранения файла, а No - к возврату в окно сохранения файла. Проверка действий пользователя и получение полного имени файла выполняется точно так же, как и в случае uigetfile.

Функции MATLAB для сохранения данных в файлах

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

save - сохранение данных в текстовом и двоичном файлах

Примечание.
Функция uisave сочетает возможности uigetfile и save - она создает диалоговое окно сохранения файла, в котором будут сохранены все переменные рабочей среды..

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

dlmwrite - запись числовых данных в текстовый файл через заданный разделитель.

xlswrite - запись данных в формате MS Excel.

wavwrite - запись wav-файла.

avifile - создает avi-файл и возвращает идентификатор на него, который используется в других функциях: addframe, close.

movie2avi - создание avi-файла из матрицы, в каждом столбце которой хранится информация об одном фрейме (см. функции: movie, getframe, im2frame).

imwrite - запись графического файла.

Кроме перечисленных функций имеются низкоуровневые функции для работы с файлами, имена которых начинаются с буквы f (см. выше раздел "Функции MATLAB для открытия файлов разных форматов").

Диалоговое окно выбора каталога - функция uigetdir

Функция uigetdir открывает диалоговое окно выбора каталога Browse for folder и возвращает путь к выбранному каталогу, либо ноль, если пользователь не сделал выбор. Проверка, был ли выбран каталог, делается точно так же, как и в функции uigetfile для диалога открытия файла. Способы вызова uigetdir:

dname = uigetdir - открывает диалоговое окно выбора каталога, в котором выделен текущий каталог MATLAB.

dname = uigetdir("startpath") - открывает диалоговое окно выбора каталога, в котором выделен заданный каталог, например: dname = uigetdir("c:\").

dname = uigetdir("startpath", "text") - открывает диалоговое окно выбора каталога, в котором выделен заданный каталог и помещает заданный текст над окном с иерархической структурой каталогов. Если нужно открыть диалоговое окно выбора каталога, в котором выделен текущий каталог MATLAB, то вместо первого входного аргумента следует указать пустую строку: dname = uigetdir("", "text").

Функции MATLAB для работы с каталогами

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

cd - смена текущего каталога MATLAB

dir - отображение содержимого каталога в командном окне или запись информации о содержимом в массив структур.

path, rmpath - управление путями поиска MATLAB.

Примечания.
Функция pathtool отображает специальное диалоговое окно Set Path для управления путями поиска MATLAB.
Функция filebrowser отображает специальное диалоговое окно Current Directory с содержимым текущего каталога, возможностью выбора нового текущего каталога и открытия файлов в MATLAB.

Все функции для работы с каталогами в MATLAB приведены в справочной системе в разделе MATLAB: Functions -- Categorical List: Desktop Tools and Development Environment: Workspace, Search Path, and File Operations.

Диалоговое окно выбора шрифта - функция uisetfont

Функция uisetfont может использоваться в двух целях:
1) создание диалогового окна выбора шрифта и запись информации о выбранном шрифте (название, размер, начертание) в структуру;
2) создание диалогового окна выбора шрифта и изменение текстовых объектов, подписей осей или элементов управления в соответствии со сделанными в этом окне установками.

S = uisetfont - приводит к появлению диалогового окна выбора шрифта и, если выбор в нем был сделан, то возвращается структура S, поля которой имеют следующий смысл:

S.FontName - строка с названием шрифта; S.FontUnits - единицы измерения ("points"); S.FontSize - размер; S.FontWeight - жирность ("normal" или "bold"); S.FontAngle - начертание ("normal" или "italic").

Если пользователь не выбрал шрифт и закрыл окно, то S равно нулю.

S = uisetfont(S0) - приводит к появлению диалогового окна выбора шрифта, в котором по умолчанию выбран шрифт в соответствии со значениями полей структуры S0, например:

S0.FontName = "Arial"; S0.FontUnits = "points"; S0.FontSize = 20; S0.FontWeight = "bold"; S0.FontAngle = "normal"; S = uisetfont(S0)

S = uisetfont("Заголовок окна") или S = uisetfont(S0, "Заголовок окна") - то же самое, что и предыдущие варианты, только окно выбора шрифта имеет заданный заголовок.

uisetfont(h) - вызов диалогового окна выбора шрифта для текстового объекта, осей или элемента управления с указателем h.

uisetfont(h, "Заголовок окна") - то же самое, что и uisetfont(h), только окно выбора шрифта имеет заданный заголовок.

S = uisetfont(h), S = uisetfont(h, "Заголовок окна") - то же самое, что и два предыдущих варианта, только информация о выборе пользователя дополнительно возвращается в структуре S.

Пример изменения шрифта графических объектов

hA = axes; % создание осей plot(rand(10)) % построение графика hT = title("Random Graph") % добавление заголовка % открытие диалогового окна для выбора шрифта разметки осей uisetfont(hA, "Set font for axes"); % открытие диалогового окна для выбора шрифта заголовка uisetfont(hT, "Set font for title"); Диалоговое окно выбора цвета - функция uisetcolor

Функция uisetcolor так же, как и uisetfont может использоваться в двух целях:
1) создание диалогового окна выбора цвета и запись выбранного цвета в вектор в формате RGB;
2) создание диалогового окна выбора цвета и изменение графических объектов, у которых есть свойство Color, в соответствии со сделанными в этом окне установками.

С = uisetcolor - создание диалогового окна выбора цвета (в нем по умолчанию текущим является белый цвет) и запись выбранного цвета в вектор С в формате RGB. Если пользователь не сделал выбор, то C равно нулю.

С = uisetcolor(С0) - то же самое, что и предыдущий вариант, только в диалоговом окне выбора цвета текущим является цвет, заданный вектором C0 в RGB. Если пользователь не сделал выбор, то C совпадает с C0.

С = uisetcolor("Заголовок окна"), С = uisetcolor(С0, "Заголовок окна") - то же самое, что и предыдущий вариант, только диалоговое окно выбора цвета имеет заданный заголовок.

uisetcolor(h) - открытие диалогового окна выбора цвета для задания цвета графического объекта с указателем h (графический объект должен иметь свойство Color).

uisetcolor(h, "Заголовок окна") - аналогично предыдущему, но диалоговое окно имеет заданный заголовок.

C = uisetcolor(h) или C = uisetcolor(h, "Заголовок окна") - то же самое, что и два последних способа. Кроме изменения цвета объекта, выбранный цвет записывается в вектор C в формате RGB.

Пример изменения цвета графических объектов.

hA = axes; % создание осей % построение графика x = 0:0.1:10; y = sin(x); hL = plot(x,y) hT = title("Random Graph") % добавление заголовка % открытие диалогового окна для выбора цвета линии uisetcolor(hL, "Select line color") % открытие диалогового окна для выбора цвета заголовка uisetcolor(hT, "Select title color") % открытие диалогового окна для выбора цвета осей uisetcolor(hA, "Select axes color")

Окно с полосой прогресса - функция waitbar

Функция waitbar создает окно с полосой прогресса и позволяет обновлять ее.

h = waitbar(x, "текст") - отображает окно с полосой прогресса и заданным текстом над полосой. Длина полосы прогресса пропорциональна значению x, которое должно быть от 0 до 1. Выходной аргумент h - указатель на графическое окно с полосой прогресса.

waitbar(x, h) - увеличивает длину полосы прогресса с указателем h в соответствии со значением x.

% создание окна с пустой полосой прогресса h = waitbar(0, "Solving eigenvalue problems..."); for i=1:100 A = rand(30); L = eig(A); waitbar(i/100) % обновление полосы прогресса end % удаление графического окна с полосой прогресса close(h)

Цвет полосы можно менять, если учесть, что полоса - полигональный объект, потомок осей, которые в свою очередь являются потомком графического окна, создаваемого функцией waitbar. Пример:

% создание окна с пустой полосой прогресса h = waitbar(0, "Solving eigenvalue problems..."); % поиск указателя на полигональный объект hP = findobj(h, "Type", "patch"); % задание цвета внутренности и границы полигонального объекта set(hP, "FaceColor", "g", "EdgeColor", "g") for i=1:1000 waitbar(i/1000, h) end close(h)

Свойства самого окна так же можно поменять, воспользовавшись как указателем на него, так и тем, что функция waitbar позволяет задавать свойства окна во входных аргументах, например:

h = waitbar(0, "Simply white", "Color", "w", "Name", "program");

Создание диалогового окна с кнопками - функция menu

Функция menu создает окно с текстом и расположенными в столбик кнопками с заданными надписями. После нажатия пользователем на кнопку, ее номер возвращается в выходном аргументе функции menu.

button = menu("Select method", "Newton", "Gauss", "Zeidel")

Если пользователь не сделал выбор, то button = 0.

Скрипты

Наряду с работой в командной строке, существует еще один способ выполнения команд. Это написание программ.

Скрипт - последовательность команд MATLAB, записанная в файл с расширением «.m». Это обычные текстовые файлы. Для их написания можно использовать любой текстовый редактор.

Чтобы создать скрипт, в общем случае достаточно иметь под рукой обычный текстовый редактор. Мы будем использовать встроенный в среду MATLAB редактор. Используйте кнопку «New Script» в верхнем левом углу для создания нового скрипта. После нажатия данной кнопки появится окно текстового редактора (рисунок 5).

Рисунок 5. Редактор кода MATLAB Создадим небольшую программу:

fprintf("Hello World!\n")

Теперь необходимо сохранить данный скрипт, для этого надо нажать на кнопку «Save» в левом верхнем углу, после чего MATLAB предложит сохранить его в текущей директории («Current Folder»). Дадим скрипту имя «Example1.m» и сохраним его. Желательно, чтобы скрипт был сохранен в текущей директории, так MATLAB будет искать скрипты для запуска


в папках, которые перечислены во внутренней переменной MATLAB path . Также в этот список входит и текущая директория, отображаемая в среде MATLAB справа в специальной плавающей области. По умолчанию скрипт будет сохранен в текущий каталог, поэтому можно сразу же сделать его вызов. Запустить скрипт на выполнение можно введя его имя (имя m-файла в который он был сохранен) в командной строке и нажав «Enter» или кнопку «Run» в редакторе кода. В обоих случаях в командном окне отобразится следующий вывод:

>> Example1 Hello World!

Рассмотрим другой пример. Имеется скрипт:

x = 0:0.02:2*pi; a = 0.3;

y = a * sin(x) + b * cos(x); plot(x, y)

Сохраним в файл Example2.m и запустим на выполнение. В результате MATLAB посчитает и выведет на экран график функции y = a sin(x )+ b cos(x ) .

Так же отметим, что после выполнения скрипта в окне «Workspace» появились переменные x ,a ,b иy . Для объяснения почему так получилось, рассмотри очень важно понятие в MATLAB как рабочая область.

Рабочая область в MATLAB

Рабочая область системы MATLAB - это область памяти, в которой размещены переменные системы. Рабочие области в MATLAB бывают двух типов:

base workspace - базовая рабочая область;

function workspace - рабочая область функции.

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

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

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


его завершения.

Комментарии

Хорошим тоном в написании программного кода считается составлять комментарии к написанному вами коду. Комментарии никак не влияют на работу программы и служат для предоставления дополнительной информации. Комментарии помогут другим людям разобраться в вашем алгоритме и помогут вам вспомнить суть написанного через какой-то промежуток времени, когда вы уже забыли что программировали. Для указания начала комментария в MATLAB используется символ «%».

% Генерация равномерно распределенных случайных чисел

% Подсчет математического ожидания сгенерированных чисел

% Отображение данных на графике

% 50 случайных чисел

% Сформировать и присвоить вектор случайных

значений переменной r

% Отобразить на графике сформированный вектор

% Проводим линию

через (0, m) и (n, m)

% Вычислить среднее арифметическое по значениям

вектора r

plot(,)

title("Mean of Random Uniform Data") % Название графика

Функции

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

function = имя_функции(x1,...,xM) оператор_1 оператор_2

оператор_n end

Функция содержится в отдельном m-файле.

Функция начинается с ключевого слова function , за которым следуют в квадратных


скобках через запятую имена выходных переменных. Далее идет знак «=» и имя функции. Имя функции подчиняется тем же правилам, что и имена переменных. Так же отметим, что имя функции обязательно должно совпадать с именем файла, в котором она определена. После имени функции в круглых скобках через запятую идут имена входных параметров.

Следующие строки содержат тело функции (любые допустимые выражения MATLAB).

В конце функция заканчивается ключевым словом end, однако оно не является обязательным, и его можно опустить.

Так же отметим, что если функция возвращает только один параметр, то его не обязательно заключать в квадратные скобки, например:

function s = triaArea(a, b)

% вычисление площади прямоугольного треугольника

% a, b - катеты треугольника

s = a * b / 2; end

Если функция вообще не возвращает параметры, то сразу после ключевого слова function идет имя функции, например:

function hellowWorld()

% пример функции без входных и выходных параметров disp("Hello world!");

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

Имя_функции(z1,...,zM)

где k1, ..., kN - переменны, куда будут записаны выходные значения функции, аz1,...,zM - аргументы функции.

В случае если функция возвращает только один параметр, то квадратные скобки можно опустить, например:

s = triaArea(1,2)

Фактические и формальные параметры функции

Важно различать фактические и формальные параметры функции:

фактический параметр - аргумент, передаваемый в функцию при ее вызове;

формальный параметр - аргумент, указываемый при объявлении или определении функции.

Поясним данное различие на примере.