Язык 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-функции :
[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2); Z = sin(R)./R; Z(R==0) = 1; mesh(X,Y,Z);
Пример векторизации кода. Код
ww = repmat (w, [size(b,1) 1]);A = b.*ww*b';
выполняется значительно быстрее, чем требующий меньше памяти и арифметических операций код
for i = 1:size(b,1) for j = i:size(b,1) A (i, j) = sum (b (i,:).*b (j,:).*w); end for j = 1:i A (i, j) = A (j, i); endend