MATLAB (сокращение от англ. «Matrix Laboratory», в русском языке произносится как Матла́б) — пакет прикладных программ для решения задач технических вычислений. Пакет используют более миллиона инженерных и научных работников, он работает на большинстве современных операционных систем, включая Linux, macOS, Solaris (начиная с версии R2010b поддержка Solaris прекращена[8][9]) и Windows[10].
Содержание
- 1 История
- 2 Язык MATLAB
- 3 Применение
- 4 Наборы инструментов
- 5 Интересные факты
- 6 Альтернативные пакеты
- 7 Примечания
- 8 Литература
- 9 Ссылки
История
MATLAB как язык программирования был разработан Кливом Моулером (англ. Cleve Moler) в конце 1970-х годов, когда он был деканом факультета компьютерных наук в Университете Нью-Мексико. Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Вскоре новый язык распространился среди других университетов и был с большим интересом встречен учёными, работающими в области прикладной математики. До сих пор в Интернете можно найти версию 1982 года, написанную на Фортране, распространяемую с открытым исходным кодом. Инженер Джон Литтл (англ. John N. (Jack) Little) познакомился с этим языком во время визита Клива Моулера в Стэнфордский университет в 1983 году. Поняв, что новый язык обладает большим коммерческим потенциалом, он объединился с Кливом Моулером и Стивом Бангертом (англ. Steve Bangert)[11]. Совместными усилиями они переписали MATLAB на C[12] и основали в 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);
Графики
Программа MATLAB может создавать трехмерную графику с помощью функций surf, plot3 или mesh.
[X,Y] = meshgrid(-8:.5:8);R = sqrt(X.^2 + Y.^2);Z = sin(R)./R;Z(R==0) = 1;mesh(X,Y,Z);
Этот код создаст каркасный 3D график sinc-функции sinRR{displaystyle {sin R over R}} . |
График sinc-функции, нарисованный с помощью MATLAB |
Применение
Математика и вычисления
MATLAB предоставляет пользователю большое количество (несколько сотен) функций для анализа данных, покрывающие практически все области математики, в частности:
- Матрицы и линейная алгебра — алгебра матриц, линейные уравнения, собственные значения и векторы, сингулярности, факторизация матриц и другие.
- Многочлены и интерполяция — корни многочленов, операции над многочленами и их дифференцирование, интерполяция и экстраполяция кривых и другие.
- Математическая статистика и анализ данных — статистические функции, статистическая регрессия, цифровая фильтрация, быстрое преобразование Фурье и другие.
- Обработка данных — набор специальных функций, включая построение графиков, оптимизацию, поиск нулей, численное интегрирование (в квадратурах) и другие.
- Дифференциальные уравнения — решение дифференциальных и дифференциально-алгебраических уравнений, дифференциальных уравнений с запаздыванием, уравнений с ограничениями, уравнений в частных производных и другие.
- Разреженные матрицы — специальный класс данных пакета MATLAB, использующийся в специализированных приложениях (функция появилась в 1992 году[13]).
- Целочисленная арифметика — выполнение операций целочисленной арифметики в среде MATLAB.
Разработка алгоритмов
MATLAB предоставляет удобные средства для разработки алгоритмов, включая высокоуровневые с использованием концепций объектно-ориентированного программирования. В нём имеются все необходимые средства интегрированной среды разработки, включая отладчик и профайлер. Функции для работы с целыми типами данных облегчают создание алгоритмов для микроконтроллеров и других приложений, где это необходимо. =)
Визуализация данных
В составе пакета MATLAB имеется большое количество функций для построения графиков, в том числе трёхмерных, визуального анализа данных и создания анимированных роликов.
Встроенная среда разработки позволяет создавать графические интерфейсы пользователя с различными элементами управления, такими как кнопки, поля ввода и другими.
Независимые приложения
Программы MATLAB, как консольные, так и с графическим интерфейсом пользователя, могут быть собраны с помощью модуля MATLAB Compiler в независимые от MATLAB исполняемые приложения или динамические библиотеки, для запуска которых на других компьютерах, однако, требуется установка свободно распространяемой среды MATLAB Runtime[14] (ранее называлась MATLAB Compiler Runtime MCR)[15].
Внешние интерфейсы
Пакет MATLAB включает различные интерфейсы для получения доступа к внешним подпрограммам, написанным на других языках программирования, данным, клиентам и серверам, общающимся через технологии Component Object Model или Dynamic Data Exchange, а также периферийным устройствам, которые взаимодействуют напрямую с MATLAB. Многие из этих возможностей известны под названием MATLAB API.
COM
Пакет MATLAB предоставляет доступ к функциям, позволяющим создавать, манипулировать и удалять COM-объекты (как клиенты, так и серверы). Поддерживается также технология ActiveX. Все COM-объекты принадлежат к специальному COM-классу пакета MATLAB. Все программы, имеющие функции контроллера автоматизации (англ. Automation controller) могут иметь доступ к MATLAB как к серверу автоматизации (англ. Automation server).
.NET
Пакет MATLAB в Microsoft Windows предоставляет доступ к программной платформе .NET Framework. Имеется возможность загружать .NET сборки (Assemblies) и работать с объектами .NET классов из среды MATLAB. В версии MATLAB 7.11 (R2010b) поддерживается .NET Framework версий 2.0, 3.0, 3.5 и 4.0.
DDE
Пакет MATLAB содержит функции, которые позволяют ему получать доступ к другим приложениям среды Windows, равно как и этим приложениям получать доступ к данным MATLAB, посредством технологии динамического обмена данными (DDE). Каждое приложение, которое может быть DDE-сервером, имеет своё уникальное идентификационное имя. Для MATLAB это имя — Matlab.
Веб-сервисы
В MATLAB существует возможность использовать веб-сервисы. Специальная функция создаёт класс, содержащий методы API веб-сервиса, что позволяет обращаться к веб сервису, через вызовы методов класса.
MATLAB взаимодействует с клиентом веб-сервиса с помощью получения от него данных, их обработки и отправки результата. Поддерживаются следующие технологии: Simple Object Access Protocol (SOAP) и Web Services Description Language (WSDL).
Последовательный порт
Интерфейс для последовательного порта пакета MATLAB обеспечивает прямой доступ к периферийным устройствам, таким как модемы, принтеры и научное оборудование, подключающееся к компьютеру через последовательный порт (COM-порт). Интерфейс работает путём создания объекта специального класса для последовательного порта. Имеющиеся методы этого класса позволяют считывать и записывать данные в последовательный порт, использовать события и обработчики событий, а также записывать информацию на диск компьютера в режиме реального времени. Это бывает необходимо при проведении экспериментов, симуляции систем реального времени и для других приложений.
MEX-файлы
Пакет MATLAB включает интерфейс взаимодействия с внешними приложениями, написанными на языках C и Фортран. Осуществляется это взаимодействие через MEX-файлы. Существует возможность вызова подпрограмм, написанных на C или Фортране из MATLAB, как будто это встроенные функции пакета. MEX-файлы представляют собой динамически подключаемые библиотеки, которые могут быть загружены и исполнены интерпретатором, встроенным в MATLAB. MEX-процедуры имеют также возможность вызывать встроенные команды MATLAB.
DLL
Интерфейс MATLAB, относящийся к общим DLL, позволяет вызывать функции, находящиеся в обычных динамически подключаемых библиотеках, прямо из MATLAB. Эти функции должны иметь C-интерфейс.
Кроме того, в MATLAB имеется возможность получить доступ к его встроенным функциям через C-интерфейс, что позволяет использовать функции пакета во внешних приложениях, написанных на C. Эта технология в MATLAB называется C Engine.
Наборы инструментов
Для MATLAB имеется возможность создавать специальные наборы инструментов (англ. toolbox), расширяющие его функциональность. Наборы инструментов представляют собой коллекции функций и объектов, написанных на языке MATLAB для решения определённого класса задач. Компания Mathworks поставляет наборы инструментов, которые используются во многих областях, включая следующие:
- Цифровая обработка сигналов, изображений и данных: Signal Processing Toolbox (появился в 1987 году[13]), DSP System Toolbox, Image Processing Toolbox (появился в 1993 году[13]), Wavelet Toolbox, Communications System Toolbox — наборы функций и объектов, позволяющих решать широкий спектр задач обработки сигналов, изображений, проектирования цифровых фильтров и систем связи.
- Системы управления: Control Systems Toolbox, Robust Control Toolbox, System Identification Toolbox, Model Predictive Control Toolbox, Model-Based Calibration Toolbox — наборы функций и объектов, облегчающих анализ и синтез динамических систем, проектирование, моделирование и идентификацию систем управления, включая современные алгоритмы управления, такие как робастное управление, H∞-управление, ЛМН-синтез, µ-синтез и другие.
- Финансовый анализ: Econometrics Toolbox, Financial Instruments Toolbox, Financial Toolbox, Datafeed Toolbox, Trading Toolbox — наборы функций и объектов, позволяющие быстро и эффективно собирать, обрабатывать и передавать различную финансовую информацию.
- Анализ и синтез географических карт, включая трёхмерные: Mapping Toolbox.
- Сбор и анализ экспериментальных данных: Data Acquisition Toolbox, Image Acquisition Toolbox, Instrument Control Toolbox, OPC Toolbox — наборы функций и объектов, позволяющих сохранять и обрабатывать данные, полученные в ходе экспериментов, в том числе в реальном времени. Поддерживается широкий спектр научного и инженерного измерительного оборудования.
- Визуализация и представление данных: Virtual Reality Toolbox — позволяет создавать интерактивные миры и визуализировать научную информацию с помощью технологий виртуальной реальности и языка VRML.
- Средства разработки: MATLAB Builder for COM, MATLAB Builder for Excel, MATLAB Builder for NET, MATLAB Compiler, 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, Optimization Toolbox, Global Optimization Toolbox, Partial Differential Equation Toolbox, Statistics And Machine Learning Toolbox, RF Toolbox — наборы специализированных математических функций и объектов, позволяющие решать широкий спектр научных и инженерных задач, включая разработку генетических алгоритмов, решения задач в частных производных, целочисленные проблемы, оптимизацию систем и другие.
- Нейронные сети: Neural Network Toolbox — инструменты для синтеза и анализа нейронных сетей.
- Нечёткая логика: Fuzzy Logic Toolbox — инструменты для построения и анализа нечётких множеств.
- Символьные вычисления: Symbolic Math Toolbox (появился в 1993 году[13]) — инструменты для символьных вычислений с возможностью взаимодействия с символьным процессором программы Maple.
Помимо вышеперечисленных, существуют тысячи других наборов инструментов для MATLAB, написанных другими компаниями и энтузиастами.
Интересные факты
Этот раздел представляет собой неупорядоченный список разнообразных фактов о предмете статьи. Пожалуйста, приведите информацию в энциклопедический вид и разнесите по соответствующим разделам статьи. Списки предпочтительно основывать на вторичных обобщающих авторитетных источниках, содержащих критерий включения элементов в список. (9 августа 2021) |
Содержание этой статьи представляет собой произвольный набор слабо связанных фактов, инструкцию, каталог или малозначимую информацию новостного характера. Пожалуйста, улучшите её в соответствии с правилами написания статей и проверьте на соответствие критериям энциклопедичности. |
Этот раздел имеет чрезмерный объём или содержит маловажные подробности неэнциклопедичного характера.Если вы не согласны с этим, пожалуйста, покажите в тексте существенность излагаемого материала. В противном случае раздел может быть удалён. Подробности могут быть на странице обсуждения. |
- Если в командной строке напечатать «why» (почему), MATLAB ответит на этот вопрос. Ответы выбираются из ограниченного множества ответов случайным образом всякий раз, когда вводится эта команда.
- В MATLAB встроена программа виртуальной машины vrcar.
Альтернативные пакеты
Существует большое количество программных пакетов для решения задач численного анализа. Многие из таких пакетов являются свободным программным обеспечением.
Совместимые с MATLAB на уровне языка программирования
Близкие по функциональности
- Julia
- R, S и SPlus.
- APL и его потомки: например J
- Python, при использовании пакета программ Python(x,y), а также с такими библиотеками как NumPy, SciPy и matplotlib реализует сходные возможности. Также, среда Enthought Canopy.
- IDL (англ. Interactive Data Language, интерактивный язык описания данных), когда-то был коммерческим конкурентом MATLAB, сейчас остаётся серьёзным конкурентом во многих прикладных областях, хотя его доля на рынке программных продуктов для численного анализа резко упала.
- Fortress, язык программирования, созданный Sun Microsystems, является наследником Фортрана, но с ним не совместим.
- При необходимости разработки больших проектов для численного анализа возможно использование языков программирования общего назначения, поддерживающих статическую типизацию и модульную структуру. Примерами могут служить Modula-3, Haskell, Ада, Java. При этом рекомендуется использовать известные в научно-инженерной среде специализированные библиотеки (см. ссылки).
Примечания
- ↑ http://www.mathworks.com/products/?s_tid=gn_ps
- ↑ http://archive.computerhistory.org/resources/access/text/2013/12/102746804-05-01-acc.pdf
- ↑ 1 2 3 http://www.mathworks.com/products/availability/#ML
- ↑ https://de.mathworks.com/support/requirements/platform-road-map.html
- ↑ https://fr.mathworks.com/help/matlab/import_export/importing-hierarchical-data-format-hdf5-files.html
- ↑ https://fr.mathworks.com/help/matlab/import_export/exporting-to-hierarchical-data-format-hdf5-files.html
- ↑ https://fr.mathworks.com/pricing-licensing.html
- ↑ Platform Road Map for MATLAB and Simulink Product Families (англ.). Дата обращения: 21 января 2011. Архивировано 3 января 2011 года.
- ↑ Is support for Solaris platform being dropped at R2010a? (англ.). Help Center — MATLAB & Simulink. The MathWorks, Inc (4 ноября 2011).
- ↑ MATLAB — Requirements (англ.). Дата обращения: 15 июня 2006. Архивировано 8 апреля 2011 года.
- ↑ Moler, C. The Origins of MATLAB (Статья Клива Молера об истории возникновения MATLAB) (англ.) (2004).
- ↑ The Growth of MATLAB and The MathWorks over Two Decades (Статья Клива Молера об основных вехах в развитии MATLAB) (англ.) (январь 2006). Дата обращения: 31 мая 2006. Архивировано 18 марта 2006 года.
- ↑ 1 2 3 4 Moler, C. A Brief History of MATLAB — MATLAB & Simulink (англ.) (2018). Дата обращения: 22 апреля 2020. Архивировано 22 августа 2019 года.
- ↑ MATLAB Compiler — MATLAB (англ.). Дата обращения: 22 апреля 2020. Архивировано 15 апреля 2020 года.
- ↑ MATLAB Compiler Runtime (MCR) — MATLAB Compiler (англ.). Дата обращения: 25 ноября 2012. Архивировано 6 февраля 2013 года.
Литература
- Дьяконов В. П. Справочник по применению системы PC MATLAB. — М.: «Физматлит», 1993. — 112 с. — ISBN 5-02-015101-7.
- Дьяконов В. П. Компьютерная математика. Теория и практика. — СПб.: «Питер», 1999,2001. — 1296 с. — ISBN 5-89251-065-4.
- Дьяконов В. П. MATLAB 5 — система символьной математики. — М.: «Нолидж», 1999. — 640 с. — ISBN 5-89251-069-7.
- Джон Г. Мэтьюз, Куртис Д. Финк. Численные методы. Использование MATLAB = Numerical Methods: Using MATLAB. — 3-е изд. — М.: «Вильямс», 2001. — 720 с. — ISBN 0-13-270042-5.
- Дьяконов В. П., Абраменкова И. В. MATLAB. Обработка сигналов и изображений. Специальный справочник. — СПб.: «Питер», 2002. — 608 с. — ISBN 5-318-00667-1.
- Дьяконов В. П., Круглов В. В. MATLAB. Анализ, идентификация и моделирование систем. Специальный справочник. — СПб.: «Питер», 2002. — 448 с. — ISBN 5-318-00359-1.
- Дьяконов В. П. Simulink 4. Специальный справочник. — СПб.: «Питер», 2002. — 528 с. — ISBN 5-318-00551-9.
- Дьяконов В. П. MATLAB 6/6.1/6.5 + Simulink 4/5. Основы применения.Полное руководство пользователя. — М.: «СОЛОН-Пресс», 2002. — 768 с. — ISBN 5-98003-007-7.
- Дьяконов В. П. MATLAB 6/6.1/6.5 + Simulink 4/5 в математике и моделировании. Основы применения.Полное руководство пользователя. — М.: «СОЛОН-Пресс», 2003. — 576 с. — ISBN 5-93455-177-9.
- Дьяконов В. П. Вейвлеты. От теории к практике. Полное руководство пользователя. Изд-е 2-е переработанное и дополненное. — М.: «СОЛОН-Пресс», 2004. — 400 с. — ISBN 5-98003-171-5.
- Дьяконов В. П. MATLAB 6.0/6.1/6.5/6.5+SP1 + Simulink 4/5. Обработка сигналов и изображений. Полное руководство пользователя. — М.: «СОЛОН-Пресс», 2005. — 592 с. — ISBN 5-93003-158-8.
- Курбатова Е. А. MATLAB 7. Самоучитель. — М.: «Диалектика», 2005. — 256 с. — ISBN 5-8459-0904-X.
- Дьяконов В. П. MATLAB 6.5/7.0 + Simulink 5/6. Основы применения.Библиотека профессионала. — М.: «СОЛОН-Пресс», 2005. — 800 с. — ISBN 5-98003-181-2.
- Дьяконов В. П. MATLAB 6.5/7.0 + Simulink 5/6 в математике и моделировании. Библиотека профессионала. — М.: «СОЛОН-Пресс», 2005. — 576 с. — ISBN 5-98003-209-6.
- Дьяконов В. П. MATLAB 6.5/7.0 + Simulink 5/6. Обработка сигналов и проектирование фильтров. Библиотека профессионала. — М.: «СОЛОН-Пресс», 2005. — 576 с. — ISBN 5-98003-206-1.
- Дьяконов В. П. MATLAB 6.5/7.0/7 SP1 + Simulink 5/6. Работа с изображениями и видеопотоками. Библиотека профессионала. — М.: «СОЛОН-Пресс», 2005. — 400 с. — ISBN 5-98003-205-3.
- Дьяконов В. П. MATLAB 6.5/7.0/7 SP1/7 SP2 + Simulink 5/6. Инструменты искусственного интеллекта и биоинформатики. Библиотека профессионала. — М.: «СОЛОН-Пресс», 2005. — 456 с. — ISBN 5-98003-255-X.
- Чарльз Генри Эдвардс, Дэвид Э. Пенни. Дифференциальные уравнения и проблема собственных значений: моделирование и вычисление с помощью Mathematica, Maple и MATLAB = Differential Equations and Boundary Value Problems: Computing and Modeling. — 3-е изд. — М.: «Вильямс», 2007. — 1104 с. — ISBN 978-5-8459-1166-7.
- Дьяконов В. П. MATLAB R2006/2007/2008 + Simulink 5/6/7. Основы применения. Изд-е 2-е, переработанное и дополненное. Библиотека профессионала. — М.: «СОЛОН-Пресс», 2008. — 800 с. — ISBN 978-5-91359-042-8.
- Дьяконов В. П. MATLAB 7.*/R2006/2007. Самоучитель. — М.: «ДМК-Пресс», 2008. — 768 с. — ISBN 978-5-94074-424-5.
- Дьяконов В. П. SIMULINK 5/6/7. Самоучитель. — М.: «ДМК-Пресс», 2008. — 784 с. — ISBN 978-5-94074-423-8.
- Дьяконов В. П. MATLAB и SIMULINK для радиоинженеров. — М.: «ДМК-Пресс», 2011. — 976 с. — ISBN 978-5-94074-492-4.
- Таранчук В. Б. Основные функции систем компьютерной алгебры (рус.). — Минск: БГУ, 2013. — 59 с.
- Оленев Н. Н., Печенкин Р. В., Чернецов А. М. Параллельное программирование в MATLAB и его приложения (рус.). — М.: ВЦ РАН, 2007. — 120 с. — ISBN 5-201-09865-7.
- Оленев Н. Н. Параллельные вычисления в MATLAB при моделировании экономики (рус.) // II Всероссийская научная конференция с молодежной научной школой «МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ РАЗВИВАЮЩЕЙСЯ ЭКОНОМИКИ», посвященная 90-летию со дня рождения академика Н.Н.Моисеева : сборник трудов. — Киров: ВятГУ, 2007. — С. 159—173.
- Оленев Н. Н., Печенкин Р. В., Чернецов А. М. Параллельное программирование в MATLAB и Simulink с приложениями к моделированию экономики (рус.). — М.: ВЦ РАН, 2015. — 123 с. — ISBN 978-5-91601-126-5. — doi:10.13140/RG.2.1.3899.2240.
Ссылки
- MathWorks — ПО для матвычислений и имитационного моделирования
- MATLAB на сайте разработчика The MathWorks
- MATLAB Central -сообщество пользователей MATLAB
- Русскоязычные книги на сайте разработчика системы MATLAB
- Категория MATLAB на Open Directory Project
- Сообщество пользователей Matlab и Simulink на сайте Exponenta.Ru
- GNU Scientific Library (GSL) — GNU научная библиотека
- Система для визуализации и предварительного анализа данных LiveGraph (включает построитель кривых, работающий в режиме реального времени) (рус.). Архивировано 3 мая 2018 года.
- Библиотека линейной алгебры LAPACK
- Библиотека быстрого преобразования Фурье FFTW
- Библиотека визуализации PLPlot
- Русскоязычный консультационный центр компании MATLAB
- Блог, посвящённый недокументированным возможностям MATLAB