`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

MATLAB 7: настольная лаборатория

0 
 

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

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

Общая характеристика

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

Главной особенностью MATLAB является то, что пакет ориентирован прежде всего на численные расчеты, визуализацию и технические приложения (символьные вычисления также поддерживаются, но это не самая сильная его сторона). Без преувеличения можно сказать, что MATLAB практически не имеет аналогов в своем секторе рынка, поскольку конкурирующие решения охватывают лишь небольшую часть его функциональности. Сегодня разработчик MATLAB, компания The MathWorks, предлагает 7-ю версию пакета, предназначенную для основных платформ: Windows, Mac OS и Linux/Unix. Все возможности пакета можно разделить на несколько функциональных блоков:

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

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

Прежде всего, он имеет предельно открытую архитектуру. Большинство функций MATLAB находится в так называемых m-файлах (с расширением *.m), написанных на внутреннем языке системы и открытых для просмотра и модификации. Такой подход обеспечивает значительную гибкость и простоту освоения.

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

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

Модули

MATLAB 7 настольная лаборатория
Так выглядит одно из окон модуля Wavelet Toolbox, предназначенного для вейвлет-анализа сигналов и изображений

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

Некоторые модули MATLAB имеют узкотехнический характер, поэтому мы по понятным причинам на них не останавливаемся. К таким, например, относятся Embedded Target for Motorola MPC555 (позволяет загружать код, сгенерированный средствами MATLAB, в микроконтроллер MPC555 и выполнять его в масштабе реального времени), Embedded Target for TI C6000 DSP (осуществляет быстрое прототипирование приложений реального времени для цифровых сигнальных процессоров Texas Instruments с плавающей и фиксированной точками) и др.

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

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

С моделями Simulink взаимодействует около десятка других модулей, предназначенных для их расширения и детализации. Важнейшими из них являются Stateflow и Stateflow Coder, представляющие интерактивную среду, управляемую событиями. Фактически Stateflow позволяет создавать модели, основанные на конечных автоматах в естественной и понятной форме, а Stateflow Coder, в свою очередь, генерирует по диаграммам Stateflow C-код, который может быть использован автономно либо совместно с другим модулем (Real-Time Workshop) для создания разнообразных приложений, работающих в реальном времени.

Еще одним важным модулем, взаимодействующим с Simulink, является Virtual Reality Toolbox, предназначенный для анимации трехмерных сцен, отражающих динамику Simulink-моделей, и взаимодействия с ними в процессе производимого в Simulink моделирования. С помощью этого модуля визуализированные динамические системы управляются устройствами Space Mouse, контроллерами движения Space Traveler или джойстиками и после отладки могут быть сохранены в распространенных видеоформатах.

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

Особое место в поставке MATLAB занимают модули для обеспечения взаимодействия пакета с внешними устройствами и источниками данных. Так, Database Toolbox служит для обмена информацией с ODBC/JBDC-совместимыми базами данных, Excel Link – для обмена данными с Microsoft Excel и т. д.

MATLAB также содержит весьма мощные инструменты для решения задач оптимизации. Модуль Optimization Toolbox поддерживает традиционные процедуры поиска экстремума для линейных, квадратичных и нелинейных задач с ограничениями и без, решения задач минимакса, широкомасштабных (large-scale) задач. В версии 7 появился новый модуль, Genetic Algorithm and Direct Search, значительно расширяющий эти функции. Он имеет средства для реализации генетических алгоритмов с возможностью управления созданием популяции, масштабированием, отбором, скрещиванием и мутациями. Алгоритмы прямого поиска позволяют находить экстремумы негладких и даже разрывных функций, что невозможно сделать традиционными методами.

Обращает на себя внимание появление в последней версии модуля Bioinformatics Toolbox. Хотя MATLAB традиционно ориентируется на технические приложения, теперь в пакете уделено внимание и биотехнологиям – Bioinformatics Toolbox предлагает ученым-биологам дружественную среду для исследований в области генной инженерии, геномных и протеономных проектов.

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

Графика

MATLAB 7 настольная лаборатория
Графические возможности MATLAB удовлетворят даже самого требовательного пользователя

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

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

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

Средства разработки

Несмотря на обширные встроенные вычислительные возможности, MATLAB, как и любая другая современная система компьютерной математики, не обходится без собственной среды разработки. Для этого в пакете поддерживается внутренний язык программирования, о котором мы упоминали выше. Скрипты (или программы) хранятся в m-файлах и являются основным средством создания пользовательских проектов в рамках системы. Также MATLAB располагает довольно развитыми инструментами отладки: точками останова, пошаговым выполнением, отображением текущих значений переменных. Кроме того, в нынешней версии появился ряд дополнительных средств (Directory Reports, M-Lint Code Checker), предназначенных для анализа кода и повышения его производительности.

Язык MATLAB, на котором написана значительная часть самого пакета, представляет собой высокоуровневый язык программирования, вобравший в себя конструкции Pascal, Basic, Fortran и, отчасти, С. Он в основном ориентирован на структурный подход, единицей программной структуры является функция, которая сохраняется в отдельном m-файле и вызывается из среды пакета таким же образом, как и любая встроенная. Поддерживаются 15 базовых типов данных, большинство из них универсальные для всех современных средств разработки (символьные, численные, логические). Специфическими для MATLAB являются структуры (аналог С-подобных структур) и клеточные массивы (матрицы, элементами которых могут быть данные произвольных типов).

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

Однако указанных средств все же недостаточно для создания высокопроизводительных приложений по причине жесткой привязки программы на языке MATLAB к самому пакету. Поэтому в поставку MATLAB включен MATLAB Compiler, значительно усовершенствованный в последней версии. С помощью этого компилятора почти любую (с очень незначительными ограничениями) программу на языке MATLAB можно на выбор преобразовать в исполняемый модуль, подключаемую библиотеку С и С++ (DLL для среды Windows), надстройку Microsoft Excel и COM-объект (для создания двух последних необходимы модули Builder for Excel и Builder for COM соответственно). Принципиально то, что все названные приложения уже не требуют MATLAB или его компонентов для своей работы.

Еще одним важным инструментом являются так называемые внешние интерфейсы, т. е. функции для взаимодействия с внешними приложениями и операционной системой. Основные интерфейсы MATLAB позволяют обращаться к DLL, внешнему коду на языках C и Fortran, классам Java (о чем выше говорилось), COM-объектам, а также осуществлять обмен по протоколу DDE.

Наконец, модуль Web Server дает разработчикам возможность создавать на MATLAB Web-приложения и включать в них стандартные компоненты пакета. При этом загружаемые в пользовательский браузер (Netscape или Internet Explorer) Web-страницы фактически служат лишь интерфейсом к MATLAB, что позволяет снабдить конечного пользователя необходимой функциональностью, не предоставляя исходного кода или отдельной лицензии на весь пакет.

Краткие итоги

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

0 
 

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT