Как пользоваться matlab
Документация
Миллионы инженеров и ученых во всем мире используют MATLAB ® , чтобы анализировать и спроектировать системы и продукты, преобразовывающие наш мир. Матричный язык MATLAB является самым естественным способом в мире выразить вычислительную математику. Встроенная графика облегчает визуализацию и понимание данных. Окружение рабочего стола способствует экспериментированию, исследованиям и открытиям. Эти средства MATLAB и возможности все строго протестированы и спроектированы, чтобы работать совместно.
MATLAB помогает вам воплощать свои идеи за пределами рабочего стола. Можно запустить исследования больших наборов данных и масштабировать до кластеров и облаков. Код MATLAB может быть интегрирован с другими языками, позволив вам развернуть алгоритмы и приложения в сети, предприятии и промышленных системах.
Примеры
- Описание рабочего стола
Ввод операторов в командной строке и просмотр результатов.
MATLAB работает, в основном, с массивами и матрицами, как в целом, так и с их частями. Матрица является двумерным массивом, часто используемым в линейной алгебре.
Переменные в MATLAB обычно являются массивами, которые могут содержать много чисел. Когда необходимо получить доступ к выбранным элементам массива, используйте индексацию.
Рабочая область содержит переменные, которые вы создаете в MATLAB или импортируете из файлов данных или других программ.
Создайте строковые массивы для текста или создайте символьные массивы для данных.
MATLAB предлагает большое количество функций, которые выполняют вычислительные задачи. Чтобы вызвать функцию, заключите ее входные параметры в круглые скобки.
Графические функции включают 2D и 3-D функции построения графика, чтобы визуализировать данные и передать результаты.
Самый простой тип программы MATLAB называется скриптом. Скрипт содержит последовательность команд и вызовов функции.
Все функции имеют сопроводительную документацию, которая включает примеры и описывает входные параметры функции, выходные параметры и синтаксис вызова.
Дистанционное обучение
MATLAB Onramp
Бесплатный двухчасовой онлайновый курс MATLAB
Видео
Начало работы с MATLAB
Получите представление о MATLAB, языке технических вычислений.
Работа в среде разработки
Доступ к инструментам, таким как браузер рабочей области истории команд и редактор переменных, сохраните и загрузите свои данные о рабочей области и управляйте окнами и структурой рабочего стола.
В помощь математикам: обзор MATLAB
Доверь свою работу кандидату наук!
Обзор MATLAB
Те, кто имеет дело с высшей математикой, прекрасно знают, с какими математическими «чудовищами» иногда приходится сталкиваться. Например, на вычисление какого-нибудь гигантского тройного интеграла можно потратить настоящую уйму времени, душевных сил и не восстанавливающихся нервных клеток. Конечно, это очень интересно, бросить вызов интегралу, и взять его. Но, что делать, если вместо этого интеграл грозиться взять Вас? Или, что еще хуже, кубический трехчлен вышел из-под контроля и разбушевался? Такого и врагу не пожелаешь.
Что делать?
Раньше вариантов было всего два: плюнуть на все и пойти гулять или вступить в многочасовую схватку с интегралом. Ну, кому многочасовую, кому многоминутную – кто как учился. Но суть не в этом. Двадцатый век и неумолимо движущийся прогресс предлагают нам третий способ, а именно позволяют взять самый сложный интеграл «по-быстрому». То же самое касается решения всевозможных уравнений, построения графиков функций в виде кубических гиперболоидов и т.д.
Для таких неординарных, но периодически случающихся среди студентов ситуаций существует мощное математическое оружие. Встречайте, кто еще не знает – пакет программ MATLAB.
Матлаб и решит уравнение, и аппроксимирует, и построит график функции. Понимаете, что это значит, друзья?
Это значит, что MATLAB – один из мощнейших на сегодняшний день пакетов обработки данных. Название расшифровывается как Matrix Laboratory. Матричная Лаборатория, если по-русски. Возможности программы покрывают практически все области математики. Так, пользуясь матлабом, Вы сможете:
- Производить всевозможные операции над матрицами, решать линейные уравнения, работать с векторами;
- Вычислять корни многочленов любой степени, производить операции над многочленами, дифференцировать, экстраполировать и интерполировать кривые, строить графики любых функций;
- Проводить статистический анализ данных с использованием цифровой фильтрации, статистической регрессии;
- Решать дифференциальные уравнения. В частных производных, линейных, нелинейных, с граничными условиями – не важно, матлаб все решит;
- Выполнять операции целочисленной арифметики.
MATLAB
Помимо всего этого возможности MATLAB позволяют визуализировать данные вплоть до построения трехмерных графиков и создания анимированных роликов.
Наше описание матлаб, конечно, далеко не полное. Помимо предусмотренных производителем возможностей и функций существует огромное количество инструментов матлаб, написанных просто энтузиастами или другими компаниями.
MATLAB как язык программирования
М-файл
А еще MATLAB – это язык программирования, используемый непосредственно при работе с программой. Не будем вдаваться в подробности, скажем только, что программы, написанные на языке MATLAB, бывают двух видов: функции и скрипты.
MATLAB — серьезное средство для серьезных ребят
Основной рабочий файл программы – М-файл. Это бесконечный текстовый файл, и именно в нем происходит непосредственно программирование вычислений. Кстати, пусть Вас не пугает это слово – для того, чтобы работать в MATLAB, вовсе не нужно быть профессиональным программистом.
М-файлы делятся на
- М-сценарии. М-сценарий – самый простой тип M-файла, у которого отсутствуют входные и выходные аргументы. Данный файл используется для автоматизации многократно повторяемых вычислений.
- M-функции. М-функции – это М-файлы, допускающие наличие входных и выходных аргументов.
Для того чтобы наглядно показать, как происходит работа в MATLAB, приведем ниже пример создания функции в матлабе. Данная функция будет вычислять среднее значение вектора.
function y = average (x)
% AVERAGE Среднее значение элементов вектора.
% AVERAGE(X), где X — вектор. Вычисляет среднее значение элементов вектора.
% Если входной аргумент не является вектором, генерируется ошибка.
[m,n] = size(x);
if (
Строка определения функции сообщает системе MATLAB, что файл является М-функцией, а также определяет список входных аргументов. Так, строка определения функции average имеет вид:
function y = average(x)
Где:
- function — ключевое слово, определяющее М-функцию;
- y — выходной аргумент;
- average — имя функции;
- x — входной аргумент.
Итак, чтобы написать функцию в матлабе, необходимо помнить, что каждая функция в системе MATLAB содержит строку определения функции, подобную приведенной.
Безусловно, такой мощный пакет нужен не только для того, чтобы облегчить жизнь студентам. В настоящее время MATLAB, с одной стороны, очень популярен среди специалистов многих научных и инженерных отраслей. С другой стороны, возможность работы с большими матрицами делает MATLAB незаменимым инструментом финансовых аналитиков, позволяющим решить намного больше задач, чем, к примеру, известный всем Excel. Подробнее о том, как сделать презентацию на компьютере вы можете прочитать в обзорной статье.
Недостатки работы с MATLAB
MATLAB — хорошо, но тяжело
Какие есть трудности в работе с MATLAB? Трудность, пожалуй, всего одна. Но фундаментальная. Чтобы полностью раскрыть возможности MATLAB и с легкостью решать встающие перед Вами задачи, придется попотеть и сначала разобраться с самим матлабом (как создать файл, как создать функцию и др.). А это не так просто, ибо мощность и широкие возможности требуют жертв.
При всем желании нельзя сказать, что MATLAB – простая программа. Тем не менее, надеемся, все вышеперечисленное будет достаточным аргументом для того, чтобы взяться за ее освоение.
И напоследок. Если Вы не знаете, почему все в Вашей жизни пошло так, а не иначе, спросите об этом у матлаба. Просто наберите в командной строке “why” (почему). Он ответит. Попробуйте!
Теперь вы знаете возможности Матлаб. В области образования MATLAB часто используется в преподавании численных методов и линейной алгебры. Многим студентам не обойтись без него при обработке результатов эксперимента, проведенного в ходе лабораторной работы. Для быстрого и качественного освоения основ работы с MATLAB Вы всегда можете обратиться к нашим специалистам, в любой момент готовым ответить на любой Ваш вопрос.
Работа с окном команд и редактором в MATLAB
MATLAB – популярный пакет программ для решения технических, математических, статистических задач, вычислений и моделирования. Так же называется и одноимённый язык программирования, который используется в этом пакете. Давайте рассмотрим порядок работы с окном команд и редактором среды MATLAB.
1 Работа с окном команд в среде MATLAB
В среде MATLAB есть несколько режимов работы. Самый простой – это ввод команд непосредственно в окно команд (Command Window).
Окно команд MATLAB
Если оно не видно в интерфейсе программы, откроем его. Найти окно команд можно через меню Desktop Command Window.
Давайте для примера введём в это окно последовательно друг за другом команды
и нажмём клавишу «Ввод» (Enter). Программа моментально создаст переменную X, создаст переменную Y и посчитает её значения по заданной функции, а затем построит её график.
Стрелками клавиатуры вверх и вниз в окне команд мы можем переключаться между введёнными командами, тут же изменять их, а по нажатию Enter отправлять среде MATLAB на исполнение. Стрелками влево и вправо можно перемещаться по введённой команде и редактировать её. Если в конце команды стоит точка с запятой, то результат будет посчитан, но не будет выведен в окно команд; в противном случае результат выполнения команды будет отображён тут же. По любой функции в среде MATLAB есть подробная встроенная справка. Например, чтобы получить справку по команде plot, выделите эту команду, нажмите на неё правой кнопкой мыши, и в открывшемся контекстном меню выберите пункт Help on Selection или нажмите клавишу F1.
Получение справки по командам MATLAB
Удобно? Безусловно. И главное – очень быстро. Все эти действия занимают несколько секунд.
Но что если нужна более сложная организация команд? Если нужно циклическое исполнение каких-то команд? Вводить команды вручную по одной, а потом долго искать их в истории может быть довольно утомительным делом.
2 Работа с редактором в среде MATLAB
Чтобы упростить жизнь учёному, инженеру или студенту, служит окно редактора (Editor). Давайте откроем окно редактора через меню Desktop Editor.
Открытие редактора MATLAB
В окне редактора можно создавать новые переменные, строить графики, писать программы (скрипты), создавать компоненты для обмена с другими средами, создавать приложения с пользовательским интерфейсом (GUI), а также редактировать имеющиеся.
Нас в данный момент интересует написание программы, содержащей функции для повторного использования в будущем. Поэтому идём в меню File редактора и выбираем New M-File.
Создание нового M-файла в MATLAB
М-файлами в среде МАТЛАБ называются файлы, содержащие текст программ (скрипты) или определённые пользователем функции.
Давайте напишем в редакторе простую функцию draw_plot:
Ввод текста программы в окне редактора MATLAB
Мы добавили вторую функцию и будем выводить сразу два графика рядом друг с другом. Знаком процента обозначаются в среде MATLAB комментарии.
Не забудем сохранить программу. Стандартное расширение файла с программой МАТЛАБ – *.m. Теперь закройте редактор и окно с графиком, который мы построили ранее.
Переходим обратно в окно команд.
Можно очистить историю команд, чтобы лишняя информация нас не отвлекала. Для этого кликните правой кнопкой мыши на поле ввода команд и в открывшемся контекстном меню выберите пункт Clear Command Window.
Переменная X у нас осталась после предыдущего эксперимента, мы её не изменяли и не удаляли. Поэтому в окно команд можно сразу ввести:
Вы увидите, что MATLAB прочитает нашу функцию из файла и выполнит её, нарисовав график.
Результат выполнения скрипта, написанного в редакторе MATLAB
Нейронные сети в matlab
Login
М-файлы позволяют сохранять множество команд программы MATLAB в одном
файле, а затем запускать их одной командой или с использованием мыши.
Вы можете достаточно легко и правильно решать простые задачи с первой попытки,
однако более сложные задачи обычно решаются методом проб и ошибок — запуском,
редактированием и перезапуском серий команд несколько раз подряд. В то время
как окно Command History (История команд) может быть полезно на протяжении
первых стадий этого процесса, в конечном счете вы убедитесь, что гораздо более
эффективным будет использование М-файлов. М-файлы также позволяют
использовать ваше решение задачи совместно с другими пользователями программы
MATLAB и форматировать ваши результаты для прочтения их другими. Существует
два различных типа М-файлов: М-файлы-сценарии и М-файлы-функции. Мы
продемонстрируем использование обоих типов М-файлов подобно тому, как
представляем различные решения задач, рассмотренные выше.
М-файлы представляют собой обыкновенные текстовые файлы, содержащие
команды программы MATLAB. Вы можете создавать и модифицировать эти файлы,
используя любой текстовый редактор или текстовый процессор, который
способен сохранять файлы в виде простого текста в формате ASCII. (Это такие
редакторы, как Notepad и WordPad в системе Windows, и emacs и vi — в системах
UNIX.) Для большего удобства вы можете использовать встроенный модуль Editor
(Редактор), который можно запустить с помощью команды edit, сам по себе
(для редактирования нового файла), или выбрав имя существующего М-файла в
текущем каталоге. Для запуска модуля Editor (Редактор) вы можете также
использовать меню File (Файл) или два крайних слева значка на панели
инструментов, как для создания нового М-файла, так и для открытия уже
существующего. Двойной щелчок мышью на М-файле в окне Current Directory
(Текущий каталог) также откроет выбранный файл в модуле Editor (Редактор).
М-файлы-сценарии
М-файл-сценарий содержит последовательность команд программы MATLAB для
запуска в определенном порядке. Сейчас мы покажем, как сконструировать М-файл-
сценарий для решения математической задачи, рассмотренной ранее. Создайте
файл, содержащий следующие строки:
Предположим, что вы сохранили этот файл под именем taski.m в вашем текущем
каталоге или в каком-либо каталоге вашего пути. Вы можете присваивать файлу
имя любым способом (в вашей операционной системе могут быть свои
особенности), но расширение .т является обязательным.
Вы можете заставить программу MATLAB запустить (или выполнить) этот
сценарий, введя команду taski в окне Command Window (Командное окно). (Вам не
следует вводить здесь расширение .m; программа MATLAB автоматически
добавляет расширение, когда производит поиск файлов.) Вывод результатов (но не
команд, с помощью которых вычисляется результат) будет отображен в окне
Command Window (Командное окно). Теперь последовательность команд может
быть легко изменена путем модификации М-файла task1.m. Например, если вы
хотите вычислить также sin(0.0001)/ 0.0001, вы можете модифицировать М-файл:
format long
х = [0.1, 0.01, 0.001, 0.0001];
у = sin(x)./x
а затем запустить модифицированный сценарий, снова введя команду taski.
Но сначала убедитесь, что сохранили свои изменения в файле taski; в противном
случае программа MATLAB не распознает эти изменения.
- Некоторые переменные, задаваемые при запуске М-файлов-сценариев, будутсохраняться, как если бы вы ввели эти переменные в окне Command Window (Командное окно) напрямую. Например, программа, рассмотренная выше, послужит причиной того, что в будущем все числовые результаты будут отображаться с точностью до 15 знака. Чтобы вернуться к формату с 5 знаками, следует ввести команду format short.
Режим ячейки
Новые возможности программы MATLAB 7 позволяют разделять М-файл —
сценарий на части (элементы), которые называются ячейками. Это особенно полезно,
если ваш М-файл длинный или если вы собираетесь его публиковать (последняя
тема рассматривается в разделе «Публикация М-файлов»). Чтобы запустить
новую ячейку, вставьте строку комментария (которая послужит в качестве
заголовка ячейки), начав эту строку двумя знаками процента %%. Если вы откроете
М-файл в модуле Editor (Редактор) и выберете команду меню Cell => Enable Cell
Mode (Ячейка => Включить режим ячейки), в этом случае под первой панелью
инструментов будет отображена вторая панель. Когда вы щелкнете мышью на
какой-нибудь строке в М-файле, ячейка, которой принадлежит эта строка, будет
выделена бледно-желтым цветом. Вы можете произвести вычисление этой
ячейки, выбрав команду меню Cell => Evaluate Current Cell (Ячейка => Вычислить
текущую ячейку) или щелкнув мышью на значке Evaluate cell (Вычислить ячейку).
Это может быть весьма полезным, если вы внесли изменения только в одну
ячейку и не хотите снова полностью запускать весь сценарий. Имеются также элемент
меню и значок для выполнения операции Evaluate cell and advance
(Вычислить ячейку и далее). Так как вы включили режим ячейки, вы можете также
создать дополнительные ячейки, выбрав команду меню Cell => Insert Cell Divider
(Ячейка => Вставить разделитель ячеек) или щелкнув мышью на значке %+ .
Инициализация М-файлов-сиенариев
Чтобы результаты М-файла-сценария были воспроизводимы, сценарий должен
быть автономным, независимым от других переменных, которые вы можете
задать где-либо в течение сессии программы MATLAB, оставшейся от предыдущих
вычислений графика должна быть также удалена. Например, если вы зададите
переменную с именем sin в окне Command Window (Командное окно), а затем
запустите сценарий task1.m, вы получите сообщение об ошибке, так как в
текущий момент sin будет представлять переменную, а не обычную встроенную
функцию. Помня об этом, вы можете ввести строку clear all в начало М-файла-
сценария, чтобы быть уверенным, что предыдущие настройки переменных не
повлияют на результаты. Вы можете также ввести строку close all в начале
М-файла-сценария, создающего графику, чтобы закрыть все окна изображений и
начать «с чистого листа».
Как отмечалось ранее, команды в М-файле-сценарии не будут автоматически
отображаться в окне Command Window (Командное окно). Если вы хотите, чтобы
команды отображались вместе с результатами, добавьте команду echo on в
начало сценария (нелишним будет также добавить команду echo off в конец
сценария). Тогда и любые комментарии в М-файле будут также отражены. При запуске
длинного М-файла-сценария подобная операция полезна, чтобы отслеживать:
какой вывод какому вводу соответствует.
Ниже представлена версия файла task1.m с более подробными комментариями, в
которой отображается как ввод, так и вывод.
clear all % remove old variable definitions
echo on % display the input in the command window
format long % turn on 15 digit display
x = [0.1, 0.01, 0.001]; % define the x values
у = sin(x)./x % compute the desired quotients
% These values illustrate the fact that the limit of
% sin(x)/x as x approaches 0 is equal to 1.
echo off
Автозагрузка М-файла
При запуске программа MATLAB производит поиск в пути по умолчанию на
предмет М-файла-сценария с именем startup.m. Если вы создадите такой файл, то
команды, которые он содержит, будут запускаться каждый раз, когда запускается
программа MATLAB. Вы можете использовать этот файл для сохранения настроек,
которые переходят из одной сессии в другую, например, изменения текущего
каталога или пути. (Кроме команд cd и addpath, рассмотренных выше, вы
можете использовать команду rmpath для удаления каталогов из пути.)
М-файлы-функиии
М-файлы-функции, в отличие от М-файлов-сценариев, позволяют задавать
значения ввода, когда вы запускаете такие М-файлы из командной строки MATLAB
или из другого М-файла. Как упоминалось в предыдущей главе, вы можете также
использовать синтаксис анонимной функции (@) (отсутствующий в программе
MATLAB 6 и более ранних версиях) или команду inline для задания своих
собственных функций в командной строке. Однако эти методы обеспечивают задание
функции только в одной строке. Таким образом, М-файлы необходимы для
задания более сложных функций. Подобно М-файлу-сценарию, М-файл-функция
представляет собой файл с простым текстом, который может находиться в вашем
текущем каталоге или где-либо в вашем пути MATLAB.
Давайте вернемся к рассмотренной выше задаче, в которой мы вычисляли
некоторые значения sin(x) /х, где х = 10^b при некоторых значениях b. Кроме
того, предположим, что вы хотите найти наименьшее значение b, для которого
sin(10^b)/ (10^b), и чтобы результат был равен 1 с точностью до 15 знаков.
Ниже представлен М-файл-функция с именем sinelimit.m, составленный с целью
выяснения этого вопроса:
function у = sinelimit (с)
% SINELIMIT computes sin (x)/x for x = 10^(-b)
% where b = 1, . с.
Format long
b = 1:c;
x = 10.^(-b);
у = (sin (x)./x) ‘ ;
Первая строка файла начинается со слова function, которое идентифицирует
файл как М-файл-функцию. (В модуле Editor (Редактор) это зарезервированное
слово выделяется синим цветом.) Первая строка М-файла задает имя функции и
описывает как входящие аргументы (или параметры), так и исходящие значения.
В этом примере функция называется sinelimit. Имя файла (за исключением
расширения .т) и имя функции должны совпадать. Когда вы создаете этот новый
М-файл-функцию в безымянном окне редактора и выбираете команду Save
(Сохранить), модуль Editor (Редактор) сам присваивает файлу имя sinelimit.m.
Функция в нашем примере имеет для ввода один элемент, который внутри М-файла
обозначен как с. В качестве результата возвращается тоже один элемент —
значение у, появляющееся в конце выполнения функции.
Неплохой практикой является снабжать первую строку М-файла-функции одной
или более строками комментариев, разъясняющих, что делает М-файл. При этом
команда help автоматически извлечет данную информацию. Например:
SINELIMIT computes sin (x)/x for x = 10^(-b)
where b = 1, . . . , с.
Остальные строки М-файла определяют функцию. В данном примере b задается в
качестве строчного вектора, состоящего из целых чисел от 1 до с, затем х
вычисляется из Ь, и, наконец, у определяется из х.
- Переменные, которые используются в М-файле функции, такие как b, x и у в файле sinelimit.m, являются локальными переменными. Это означает, что, в отличие от переменных, заданных в М-файле-сценарии, эти переменные не связаны с любыми другими переменными с такими же именами, которые вы могли использовать в окне Command Window (Командное окно). Программа MATLAB не запоминает значения этих переменных после того, как М-файл-функция будет выполнен. Для получения более полных сведений обратитесь к разделу «Переменные в М-файлах- функциях» в главе 4.
Обратите внимание, что строки, задающие b, x и у, заканчивается точкой с
запятой. Использование точки с запятой в конце строк определяет отсутствие
вывода результатов для этих строк, то есть результат работы этих строк не будет
отображаться в окне Command Window (Командное окно). Несмотря на то, что
отображение результатов промежуточных вычислений может быть полезным
для отладки, в основном вам следует пресекать весь вывод в М-файле-функции.
Ниже представлен пример, показывающий, как используется функция sinelimit:
» sinelimit (5)
ans =
0.99833416646828
0.99998333341667
0.99999983333334
0.99999999833333
0.99999999998333
Ни одно из значений b от первого до пятого не приводит к желаемому
результату, 1 с точностью до 15 знака. Судя по выведенному результату, можно надеяться
найти ответ на ранее поставленный вопрос, введя команду sinelimit A0).
Попробуйте!
Поэтому из выше всего сказанного можно сделать вывод, что вам необходимо просмотреть много дополнительной информации и альтернатив!
Как устроен современный MATLAB?
MATLAB сочетает в себе простой в освоении язык с высокой скоростью расчетов. Благодаря чему достигается такое быстродействие? Что нужно сделать, чтобы написать на MATLAB по-настоящему быструю программу? Наконец, существует ли достойная альтернатива MATLABу среди свободного программного обеспечения? На все эти вопросы мы и постараемся сейчас ответить.
MATLAB появился в конце 1970-х как скриптовый язык и обертка над функциями библиотек линейной алгебры LINPACK и EISPACK. Особенностью MATLAB является то, что базовый (а в ту пору — единственный) тип данных в нем — матрица, а не число. Благодаря этому удалось избавить запись матричных операций от циклов, сделав ее более компактной и похожей на математическую. С другой стороны, использование самых современных на тот момент библиотек обеспечивало высокое быстродействие расчетов. Все это способствовало быстрому росту популярности MATLAB.
Умножение матрицы на число, записанное разными способами
С тех пор прошло более тридцати лет. За эти годы о MATLAB были написаны десятки книг, он сделался одним из стандартных языков для научно-технических расчетов. Относительная простота языка и высокая скорость выполняемых с его помощью вычислений сохранились и по-прежнему остаются привлекательными сторонами пакета. Но за счет чего это достигается? Как устроен современный MATLAB?
Как и прежде, у MATLAB «под капотом» самые современные математические библиотеки. Сейчас это: Intel Math Kernel Library (MKL) для операций линейной алгебры и Intel Integrated Performance Primitives Library (IPPL) — для оптимизации обработки изображений. MKL включает в себя, в частности, библиотеки: BLAS, реализующую базовые векторно-матричные операции, и LAPACK — современное развитие LINPACK — содержащую решатели задач линейной алгебры. Поэтому неудивительно, что по скорости выполнения MATLAB обгоняет любой «самодельный» код, реализующий векторно-матричные операции. Также уверенно обходит он и пакеты, использующие другие реализации BLAS и LAPACK.
Дело в том, что MKL и IPPL используют SSE и AVX — наборы инструкций для процессора, которые реализуют параллельные вычисления, в случае, когда нужно выполнить одну и ту же последовательность действий над разными данными (SIMD). Это приводит к существенному росту производительности, причем без каких-либо усилий со стороны пользователя.
Кроме того, MATLAB, вероятно, использует SSE/AVX и в функциях своего ядра, которые реализованы на С. По крайней мере, для разработки пакета MathWorks использует Intel Parallel Studio XE, в состав которого входит компилятор C/C++.
Любопытно, что на компьютерах с процессорами AMD MATLAB также использует библиотеки, разработанные в Intel, хотя AMD реализовало свою библиотеку со сходными возможностями — AMD Core Math Library (ACML).
Таким образом, быстродействие MATLAB складывается из высокооптимизированных библиотек (Intel), неявной параллелизации (что также является заслугой Intel) и настроенных на использование этих преимуществ функций ядра (MathWorks). Мы не можем знать точно степень влияния каждого из факторов, кроме того они могут меняться от версии к версии и от платформы к платформе.
Определение версий используемых MATLAB библиотек с помощью функции version
Для того чтобы эффективно использовать эти возможности, нужно «векторизовать» программу, т. е. заменить использование циклов операциями над массивом в целом, которые как раз и реализуются быстрыми функциями MATLAB.
Но и циклы не были забыты. В 2003 г. в составе MATLAB (версии 6.5, R13) появился JIT-компилятор. Он анализирует выполняемую программу, транслируя повторяющиеся фрагменты в машинный код. В результате, при последующих повторениях скорость выполнения этих фрагментов значительно возрастает (иногда — до 100 раз), что позволяет сделать некоторые циклы почти столь же быстрыми, как их векторизованные аналоги. Но: для того, чтобы JIT-компилятор можно было успешно применить, код цикла должен удовлетворять определенным требованиям.
Краткую сводку этих требований, а также советов по векторизации программы, можно получить в работе Writing Fast MATLAB Code, а более детальную и свежую информацию — в блоге Undocumented Matlab Яира Альтмана или на страницах его книги “Accelerating MATLAB Performance” — наиболее подробному на сегодняшний день руководству по оптимизации программ MATLAB. Кстати, приведенное выше использование функции version также относится к недокументированным возможностям пакета.
В качестве более дешевой альтернативы MATLABу можно использовать Python c библиотеками NumPy/SciPy и установленной MKL. При этом вместо JIT-компилятора MATLAB применяются Numba или Cython. Многочисленные тесты, результаты которых можно найти в Интернет (например, этот), говорят о том, что MATLAB и связка Python + SciPy выдают весьма близкие по быстродействию результаты, так что на первый план выступают умение программиста и его знание особенностей конкретного пакета.