MATLAB

Аз Википедиа

MATLAB (сокращение от англисӣ: «Matrix Laboratory») — термин, относящийся к пакету прикладных программ для решения задач технических вычислений, а также к используемому в этом пакете языку программирования. MATLAB используется более чем 1 000 000 инженерных и научных работников, и работает на большинстве современных операционных систем, включая GNU/Linux, Mac OS, Solaris и Microsoft Windows [1].

Мундариҷа

[вироиш] История

MATLAB как язык программирования был разработан Кливом Моулером (англисӣ: Cleve Moler) в конце 1970-х годов, когда он был деканом факультета компьютерных наук в Университете Нью-Мексико (англисӣ: computer science department at the University of New Mexico). Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Вскоре новый язык распространился среди других университетов, и был с большим интересом встречен учёными, работающими в области прикладной математики. До сих пор в Интернете можно найти версию 1982 года, написанную на Фортране, распространяемую с открытым исходным кодом. Инженер Джон Литтл (англисӣ: John N. (Jack) Little), познакомился с этим языком во время визита Клива Моулера в Стэнфордский Университет в 1983 году. Поняв, что новый язык обладает большим коммерческим потенциалом, он объединился с Кливом Моулером и Стивом Бангертом (англисӣ: Steve Bangert). Совместными усилиями они переписали MATLAB на C и основали в 1984 компанию The MathWorks для дальнейшего развития. Эти переписанные на С библиотеки долгое время были известны под именем JACKPAC. Первоначально MATLAB предназначался для проектирования систем управления (основная специальность Джона Литтла), но быстро завоевал популярность во многих других научных и инженерных областях. Он также широко использовался и в образовании, в частности для преподавания линейной алгебры и численных методов.

[вироиш] Язык MATLAB

[вироиш] Описание языка

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

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

Основной особенностью языка MATLAB является его широкие возможности по работе с матрицами, которые создатели языка выразили в лозунге думай векторно (англисӣ: Think vectorized).

[вироиш] Примеры

Пример кода, являющегося частью функции magic.m, генерирующего магический квадрат M для нечётных значений размера стороны n:

 [J,I] = meshgrid(1:n);
 A = mod(I+J-(n+3)/2,n);
 B = mod(I+2*J-2,n);
 M = n*A + B + 1;

Пример кода, загружающего одномерный массив A значениями массива B в обратном порядке (только, если вектор A определен и число его элементов совпадает с числом эментов вектора B):

 A(1:end) = B(end:-1:1)
График sinc-функции, нарисованный с помощью MATLAB

Пример кода, рисующего график sinc-функции  {\sin R \over R} :

 [X,Y] = meshgrid(-8:.5:8);
 R = sqrt(X.^2 + Y.^2) + eps;
 Z = sin(R)./R;
 mesh(X,Y,Z)

[вироиш] Применение

[вироиш] Математика и вычисления

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

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

[вироиш] Разработка алгоритмов

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

[вироиш] Визуализация данных

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

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

[вироиш] Внешние интерфейсы

Пакет MATLAB включает различные интерфейсы для получения доступа к внешним подпрограммам, написанным на других языках программирования, данным, клиентам и серверам, общающимся через технологии Component Object Model или Dynamic Data Exchange, а также периферийным устройствам, которые взаимодействуют напрямую с MATLAB. Многие из этих возможностей известны под названием MATLAB API.

[вироиш] COM

Пакет MATLAB предоставляет доступ к функциям, позволяющим создавать, манипулировать и удалять COM-объекты (как клиенты, так и сервера). Поддерживается также технология ActiveX. Все COM-объекты принадлежат к специальному COM-классу пакета MATLAB. Все программы, имеющие функции контроллера автоматизации (англисӣ: Automation controller) могут иметь доступ к MATLAB как к серверу автоматизации (англисӣ: Automation server).

[вироиш] DDE

Пакет MATLAB содержит функции, которые позволяют ему получать доступ к другим приложениям среды Windows, равно как и этим приложениям получать доступ к данным MATLAB, посредством технологии динамического обмена данными (DDE). Каждое приложение, которое может быть DDE-сервером, имеет своё уникальное идентификационное имя. Для MATLAB это имя — Matlab.

[вироиш] Веб-сервисы

В MATLAB существует возможность вызывать методы веб-сервисов. Специальная функция создаёт класс, основываясь на методах API веб-сервиса.

MATLAB взаимодействует с клиентом веб-сервиса с помощью принятия от него посылок, их обработки и посылок ответа. Поддерживаются следующие технологии: Simple Object Access Protocol (SOAP) и Web Services Description Language (WSDL).

[вироиш] COM-порт

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

[вироиш] MEX-файлы

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

[вироиш] DLL

Интерфейс MATLAB, относящийся к общим DLL позволяет вызывать функции, находящиеся в обычных динамически подключаемых библиотеках, прямо из MATLAB. Эти функции должны иметь C-интерфейс.

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

[вироиш] Наборы инструментов

Для MATLAB имеется возможность создавать специальные наборы инструментов (англисӣ: toolbox), расширяющих его функциональность. Наборы инструментов представляют собой коллекции функций, написанных на языке MATLAB для решения определённого класса задач. Компания Mathworks поставляет наборы инструментов, которые используются во многих областях, включая следующие:

  • Цифровая обработка сигналов, изображений и данных: DSP Toolbox, Image Processing Toolbox, Wavelet Toolbox, Communication Toolbox, Filter Design Toolbox — наборы функций, позволяющих решать широкий спектр задач обработки сигналов, изображений, проектирования цифровых фильтров и систем связи.
  • Финансовый анализ: GARCH Toolbox, Fixed-Income Toolbox, Financial Time Series Toolbox, Financial Derivatives Toolbox, Financial Toolbox, Datafeed Toolbox — наборы функций, позволяющие быстро и эффективно собирать, обрабатывать и передавать различную финансовую информацию.
  • Анализ и синтез географических карт, включая трёхмерные: Mapping Toolbox.
  • Сбор и анализ экспериментальных данных: Data Acquisition Toolbox, Image Acquisition Toolbox, Instrument Control Toolbox, Link for Code Composer Studio — наборы функций, позволяющих сохранять и обрабатывать данные, полученные в ходе экспериментов, в том числе в реальном времени. Поддерживается широкий спектр научного и инженерного измерительного оборудования.
  • Визуализация и представление данных: Virtual Reality Toolbox — позволяет создавать интерактивные миры и визуализировать научную информацию с помощью технологий виртуальной реальности и языка VRML.
  • Средства разработки: MATLAB Builder for COM, MATLAB Builder for Excel, MATLAB Compiler, Filter Design HDL Coder — наборы функций, позволяющих создавать независимые приложения из среды MATLAB.
  • Взаимодействие с внешними программными продуктами: MATLAB Report Generator, Excel Link, Database Toolbox, MATLAB Web Server, Link for ModelSim — наборы функций, позволяющие сохранять данные в различных видов таким образом, чтобы другие программы могли с ними работать.
  • Базы данных: Database Toolbox — инструменты работы с базами данных.
  • Научные и математические пакеты: Bioinformatics Toolbox, Curve Fitting Toolbox, Fixed-Point Toolbox, Fuzzy Logic Toolbox, Genetic Algorithm and Direct Search Toolbox, OPC Toolbox, Optimization Toolbox, Partial Differential Equation Toolbox, Spline Toolbox, Statistic Toolbox, RF Toolbox — наборы специализированных математических функций, позволяющие решать широкий спектр научных и инженерных задач, включая разработку генетических алгоритмов, решения задач в частных производных, целочисленные проблемы, оптимизацию систем и другие.
  • Нейронные сети: Neural Network Toolbox — инструменты для синтеза и анализ нейронных сетей.
  • Символьные вычисления: Symbolic Math Toolbox — инструменты для символьных вычислений с возможностью взаимодействия с символьным процессором программы Maple.

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

[вироиш] Интересные факты

Если напечатать в командной строке MATLAB слово «toilet» (туалет), будет запущена система, моделирующая динамику работы сливного бачка туалета.

Если в командной строке напечатать «why» (почему), MATLAB ответит на этот вопрос. Ответы выбираются из ограниченного множества ответов случайным образом всякий раз, когда вводится эта команда.

[вироиш] Альтернативные пакеты

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

[вироиш] Совместимые с MATLAB на уровне языка программирования

[вироиш] Близкие по функциональности

  • R, S и SPlus.
  • APL и его потомки: например J
  • Python, при использовании с такими библиотеками как Numeric Python и SciPy реализует сходные возможности.
  • IDL (англисӣ: Interactive Data Language, интерактивный язык описания данных), когда-то был коммерческим конкурентом MATLAB, сейчас остаётся серьёзным конкурентом во многих прикладных областях, хотя его доля на рынке программных продуктов для численного анализа резко упала.
  • Если имеется необходимость разработки больших проектов для численного анализа, то возможно использование языков программирования общего назначения, поддерживающих статическую типизацию и модульную структуру. Примерами могут служить Modula-3, Haskell, Ада, Java. При этом рекомендуется использовать известные в научно-инженерной среде специализированные библиотеки (см. ссылки).

[вироиш] См. также

[вироиш] Ссылки

[вироиш] Литература

Баргирифта аз "http://tg.wikipedia.org/wiki/MATLAB"