MATLAB — это коммерческая среда и одноименный язык программирования для матричных, инженерных и научных вычислений от компании MathWorks. Название расшифровывается как MATrix LABoratory: базовый тип данных здесь — матрица, а типовые операции линейной алгебры, обработки сигналов и построения графиков встроены сразу, без подключения сторонних библиотек.
Содержание
Ниже разберу, из чего состоит MATLAB (язык, среда, тулбоксы), покажу рабочий пример с матрицами и графиком с описанием вывода, разведу частую ошибку с умножением, сравню MATLAB со связкой Python и NumPy по лицензии и стоимости и покажу бесплатную альтернативу — GNU Octave.
Что такое MATLAB: язык, среда и тулбоксы
Слово MATLAB обозначает сразу три вещи, и их полезно различать:
- язык MATLAB — высокоуровневый интерпретируемый язык с динамической типизацией, где переменная по умолчанию считается матрицей;
- среда MATLAB — IDE с редактором, интерактивной командной строкой, рабочим пространством переменных и средствами отладки;
- тулбоксы (toolboxes) — платные надстройки MathWorks под конкретные задачи: обработка сигналов, статистика, машинное обучение, управление и другие.
Отдельно стоит Simulink — это не часть языка, а среда блочного моделирования: динамические и встраиваемые системы собирают из готовых блоков-схем, а не пишут кодом. Символьные вычисления (работа с формулами, а не числами) вынесены в тулбокс Symbolic Math, который исторически опирался на движок MuPAD.
MATLAB создал в конце 1970-х Клив Моулер, тогда заведующий кафедрой информатики в Университете Нью-Мексико. Первая версия была не языком, а интерактивным матричным калькулятором: она давала студентам доступ к фортрановским библиотекам LINPACK и EISPACK без написания кода на Fortran. Коммерческим продуктом MATLAB стал в 1984 году, когда Моулер вместе с Джеком Литтлом основал компанию MathWorks и переписал систему на языке C.
Важная граница: MATLAB — проприетарный и платный продукт. Бесплатной полноценной версии нет; есть более дешевые студенческие и домашние лицензии, но исходный код закрыт, а работа вне экосистемы MathWorks ограничена. Это ключевое отличие от открытых инструментов, к которому вернусь ниже.
Пример: матрицы и график
MATLAB удобно показать на коротком скрипте: создание матрицы, операции линейной алгебры и построение графика. Код запускается в среде MATLAB как есть.
% Матрица 2x2 и базовые операции
A = [1 2; 3 4]; % строки разделяются ';', элементы - пробелом
b = A * [1; 1]; % умножение матрицы на вектор-столбец -> [3; 7]
d = det(A); % определитель матрицы -> -2
A_t = A'; % транспонирование через штрих
% Вектор точек и график синуса
x = 0:0.1:2*pi; % вектор от 0 до 2*pi с шагом 0.1
y = sin(x); % sin применяется поэлементно ко всему вектору
plot(x, y); % откроется окно с графиком синусоиды
xlabel('x'); ylabel('sin(x)'); title('График синуса');
Что происходит по шагам. Запись A = [1 2; 3 4] задает матрицу 2×2. Умножение A * [1; 1] — это обычное матричное умножение, оно дает вектор-столбец [3; 7] (1+2 и 3+4). Функция det(A) возвращает определитель 1*4 - 2*3 = -2. Штрих A' транспонирует матрицу (меняет строки и столбцы местами).
Строка x = 0:0.1:2*pi показывает синтаксис диапазона начало:шаг:конец — получается вектор-строка примерно из 63 значений. sin(x) считает синус сразу для всего вектора, поэлементно. Вызов plot(x, y) открывает графическое окно с плавной синусоидой от 0 до примерно 6.28; следующие три команды подписывают оси и заголовок.
Две детали, зависящие от версии и настроек, вынесены в заметки для ревью: точное число точек в векторе и то, что штрих ' — это сопряженное транспонирование (для действительных матриц совпадает с обычным .', для комплексных — нет).
Частая ошибка: * вместо .*
В MATLAB * — это матричное умножение, а поэлементное — отдельный оператор .* (с точкой). Новички путают их и получают ошибку размерностей. Пусть есть два вектора-строки одинаковой длины, и нужно перемножить их поэлементно:
a = [1 2 3];
b = [4 5 6];
c = a * b; % НЕВЕРНО: пытаемся умножить строку 1x3 на строку 1x3
Фактический результат — ошибка (текст зависит от версии MATLAB):
Error using *
Incorrect dimensions for matrix multiplication.
Матричное умножение требует, чтобы число столбцов первого множителя равнялось числу строк второго, а тут 1x3 на 1x3 не сходится. Исправлений два, и выбор зависит от того, что нужно посчитать:
c = a .* b; % поэлементное произведение -> [4 10 18]
s = a * b'; % скалярное произведение (b' - столбец) -> 32
Правило простое: нужно перемножить элементы по позициям — ставим .*; нужна операция линейной алгебры (произведение матриц, скалярное произведение) — оставляем * и следим за размерностями. Та же логика у деления (./ против /) и степени (.^ против ^).
MATLAB и Python с NumPy: в чем разница
Ту же математику покрывает бесплатная связка Python и библиотеки NumPy. Прямое сравнение помогает решить, что учить и на чем считать.
| Критерий | MATLAB | Python + NumPy | GNU Octave |
|---|---|---|---|
| Лицензия | проприетарная, закрытая | открытая (BSD/PSF) | открытая (GPL) |
| Стоимость | платная (есть студенческие и домашние тарифы дешевле) | бесплатно | бесплатно |
| Индексация | с 1 | с 0 | с 1 |
| Основной тип | матрица из коробки | массив NumPy (нужен импорт) | матрица из коробки |
| Экосистема | тулбоксы MathWorks, Simulink | PyPI: SciPy, matplotlib, pandas | базовый набор, не все тулбоксы MATLAB |
| Где силен | инженерия, моделирование, готовые тулбоксы | универсальный язык, ML, веб, данные | численные расчеты на синтаксисе MATLAB |
Главная граница — именно лицензия и стоимость. MATLAB платный и закрытый: за среду и каждый тулбокс платят отдельно, а вне экосистемы MathWorks код переносится плохо. Python с NumPy бесплатны и открыты, но матричные операции требуют импорта библиотек, а привычной инженеру интегрированной среды с тулбоксами из коробки нет — ее собирают из отдельных пакетов.
Практический ориентир: если задача — инженерное моделирование, обработка сигналов или работа в среде, где MATLAB уже стандарт (вуз, НИИ, конкретная отрасль), берут MATLAB. Если нужен универсальный язык, интеграция с вебом и данными или бюджет ограничен — связку Python и NumPy.
Octave как бесплатная альтернатива
GNU Octave — свободный язык численных вычислений, во многом совместимый с синтаксисом MATLAB. Большинство простых скриптов с матрицами, plot и базовой линейной алгеброй запускаются в Octave почти без правок, а индексация тоже начинается с 1.
Octave подходит, чтобы учиться и решать типовые численные задачи бесплатно. Но это не полная замена: у Octave нет Simulink, часть платных тулбоксов MathWorks недоступна или заменена неполными аналогами, а поведение в краевых случаях и производительность местами отличаются. Для учебы и небольших расчетов Octave — разумный старт; для промышленного стека, завязанного на конкретные тулбоксы MATLAB, он подходит не всегда.
Выводы
- MATLAB — это связка языка и среды для матричных, инженерных и научных вычислений; базовый тип данных — матрица, а линейная алгебра и графики встроены сразу.
- Слово MATLAB покрывает три сущности: язык, среду (IDE) и платные тулбоксы; Simulink и символьные вычисления — отдельные надстройки, а не ядро языка.
- MATLAB проприетарный и платный — это его явная граница; открытые альтернативы для той же математики — Python с NumPy и GNU Octave.
- В MATLAB
*— матричное умножение, а поэлементное —.*; путаница операторов дает ошибку размерностей. - Octave во многом совместим с синтаксисом MATLAB и бесплатен, но не заменяет Simulink и часть тулбоксов.
Где применяется / связь с практикой
MATLAB силен там, где основа работы — численные и матричные расчеты. Типичные области: инженерия и системы управления (проектирование и моделирование), научные исследования и обработка данных, а также цифровая обработка сигналов (DSP) — фильтрация, спектральный анализ, обработка аудио, видео и изображений. Отсюда и спрос в вузах, НИИ и профильных отраслях, где MATLAB и Simulink — принятый стандарт.
Освойте тему на практике
Освоить MATLAB на инженерных и вычислительных задачах системно можно на курсе matlab в Otus. Посмотреть формат и уровень занятий, не оплачивая курс, помогают бесплатные вебинары — на них разбирают конкретные задачи и отвечают на вопросы.
Смежные темы: Язык программирования R.
FAQ
Нужно ли платить, чтобы попробовать MATLAB?
Да, MATLAB платный, но у MathWorks есть бесплатный пробный период и относительно недорогие студенческие и домашние лицензии. Бесплатно и без ограничений похожую математику можно считать в GNU Octave.
MATLAB подходит для веб-разработки или создания игр?
Нет, это не его задача. MATLAB заточен под численные и инженерные вычисления и моделирование; для веба, игр и обычного прикладного софта берут универсальные языки вроде Python, JavaScript или C++.
Можно ли перенести код с MATLAB на другой язык?
Частично. MathWorks предлагает MATLAB Coder для генерации кода на C и C++, а простые скрипты часто переносят на Python с NumPy или запускают в Octave. Но код, завязанный на конкретные тулбоксы или Simulink, переносится плохо.



