Вектор в matlab
Вектор в matlab
Выше были рассмотрены операции с простыми переменными. Однако с их помощью сложно описывать сложные данные, такие как случайный сигнал, поступающий на вход фильтра или хранить кадр изображения и т.п. Поэтому в языках высокого уровня предусмотрена возможность хранить значения в виде массивов. В MatLab эту роль выполняют векторы и матрицы.
Ниже показан пример задания вектора с именем a, и содержащий значения 1, 2, 3, 4:
a = [1 2 3 4]; % вектор-строка
Для доступа к тому или иному элементу вектора используется следующая конструкция языка:
disp( a(1) ); % отображение значения 1-го элемента вектора
disp( a(2) ); % отображение значения 2-го элемента вектора
disp( a(3) ); % отображение значения 3-го элемента вектора
disp( a(4) ); % отображение значения 4-го элемента вектора
т.е. нужно указать имя вектора и в круглых скобках написать номер индекса элемента, с которым предполагается работать. Например, для изменения значения 2-го элемента массива на 10 достаточно записать
a(2) = 10; % изменение значения 2-го элемента на 10
Часто возникает необходимость определения общего числа элементов в векторе, т.е. определения его размера. Это можно сделать, воспользовавшись функцией length() следующим образом:
N = length(a); % (N=4) число элементов массива а
Если требуется задать вектор-столбец, то это можно сделать так
a = [1; 2; 3; 4]; % вектор-столбец
b = [1 2 3 4]’; % вектор-столбец
при этом доступ к элементам векторов осуществляется также как и для векторов-строк.
Следует отметить, что векторы можно составлять не только из отдельных чисел или переменных, но и из векторов. Например, следующий фрагмент программы показывает, как можно создавать один вектор на основе другого:
a = [1 2 3 4]; % начальный вектор a = [1 2 3 4]
b = [a 5 6]; % второй вектор b = [1 2 3 4 5 6]
Здесь вектор b состоит из шести элементов и создан на основе вектора а. Используя этот прием, можно осуществлять увеличение размера векторов в процессе работы программы:
a = [a 5]; % увеличение вектора а на один элемент
Недостатком описанного способа задания (инициализации) векторов является сложность определения векторов больших размеров, состоящих, например, из 100 или 1000 элементов. Чтобы решить данную задачу, в MatLab существуют функции инициализации векторов нулями, единицами или случайными значениями:
a1 = zeros(1, 100); % вектор-строка, 100 элементов с
% нулевыми значениями
a2 = zeros(100, 1); % вектор-столбец, 100 элементов с
% нулевыми значениями
a3 = ones(1, 1000); % вектор-строка, 1000 элементов с
% единичными значениями
a4 = ones(1000, 1); % вектор-столбец, 1000 элементов с
% единичными значениями
a5 = rand(1000, 1); % вектор-столбец, 1000 элементов со
% случайными значениями
Матрицы в MatLab задаются аналогично векторам с той лишь разницей, что указываются обе размерности. Приведем пример инициализации единичной матрицы размером 3х3:
E = [1 0 0; 0 1 0; 0 01]; % единичная матрица 3х3
E = [1 0 0
0 1 0
0 0 1]; % единичная матрица 3х3
Аналогичным образом можно задавать любые другие матрицы, а также использовать приведенные выше функции zeros(), ones() и rand(), например:
A1 = zeros(10,10); % нулевая матрица 10х10 элементов
A2 = zeros(10); % нулевая матрица 10х10 элементов
A3 = ones(5); % матрица 5х5, состоящая из единиц
A4 = rand(100); % матрица 100х100, из случайных чисел
Для доступа к элементам матрицы применяется такой же синтаксис как и для векторов, но с указанием строки и столбца где находится требуемый элемент:
A = [1 2 3;4 5 6;7 8 9]; % матрица 3х3
disp( A(2,1) ); % вывод на экран элемента, стоящего во
% второй строке первого столбца, т.е. 4
disp( A(1,2) ); % вывод на экран элемента, стоящего в
% первой строке второго столбца, т.е. 2
Также возможны операции выделения указанной части матрицы, например:
B1 = A(:,1); % B1 = [1; 4; 7] – выделение первого столбца
B2 = A(2,:); % B2 = [1 2 3] – выделение первой строки
B3 = A(1:2,2:3); % B3 = [2 3; 5 6] – выделение первых двух
% строк и 2-го и 3-го столбцов матрицы А.
Размерность любой матрицы или вектора в MatLab можно определить с помощью функции size(), которая возвращает число строк и столбцов переменной, указанной в качестве аргумента:
a = 5; % переменная а
A = [1 2 3]; % вектор-строка
B = [1 2 3; 4 5 6]; % матрица 2х3
size(a) % 1х1
size(A) % 1х3
size(B) % 2х3
© 2020 Научная библиотека
Копирование информации со страницы разрешается только с указанием ссылки на данный сайт
Документация
Векторизация
Используя векторизацию
MATLAB ® оптимизирован для операций включающие матрицы и векторы. Процесс пересмотра основанного на цикле, ориентированного на скаляр кода, чтобы использовать матрицу MATLAB и векторные операции называется векторизацией . Векторизация вашего кода стоит по нескольким причинам:
Внешний вид: Векторизованный математический код появляется больше как математические выражения, найденные в учебниках, делая код легче понять.
Менее подверженный ошибкам : Без циклов векторизованный код часто короче. Меньше строк кода означает меньше возможностей ввести программные ошибки.
Производительность: Векторизованный код часто запускается намного быстрее, чем соответствующий код, содержащий циклы.
Векторизация кода для общего вычисления
Этот код вычисляет синус 1 001 значения в пределах от от 0 до 10:
Это — векторизованная версия того же кода:
Второй пример кода обычно выполняется быстрее, чем первое и является более эффективным использованием MATLAB. Скорость выполнения теста в вашей системе путем создания скриптов, которые содержат код, показанный, и затем используют tic и toc функции, чтобы измерить их время выполнения.
Векторизация кода для определенных задач
Этот код вычисляет совокупную сумму вектора в каждом пятом элементе:
Используя векторизацию, можно записать намного более краткий процесс MATLAB. Этот код показывает один способ выполнить задачу:
Операции над массивами
Операторы массивов выполняют ту же операцию для всех элементов в наборе данных. Эти типы операций полезны для повторяющихся вычислений. Например, предположите, что вы собираете объем ( V ) из различных конусов путем записи их диаметра ( D ) и высота ( H ). Если вы собираете информацию всего для одного конуса, можно вычислить объем для того одного конуса:
Теперь соберите информацию относительно 10 000 конусов. Векторы D и H каждый содержит 10 000 элементов, и вы хотите вычислить 10 000 объемов. На большинстве языков программирования необходимо настроить цикл, подобный этому коду MATLAB:
С MATLAB можно выполнить вычисление для каждого элемента вектора с подобным синтаксисом как скалярный случай:
Примечание
Размещение периода ( . ) перед операторами * , / , и ^ , преобразовывает их в операторы массивов.
Операторы массивов также позволяют вам объединить матрицы различных размерностей. Это автоматическое расширение размера 1 размерность полезно для векторизации создания сетки, матричных и векторных операций и т.д.
Предположим тот матричный A представляет экзаменационные отметки, строки которых обозначают различные классы. Вы хотите вычислить различие между средней оценкой и отдельной музыкой к каждому классу. Используя цикл, операция похожа:
Более прямой способ сделать это с A — mean(A) , который избегает потребности цикла и значительно быстрее.
Даже при том, что A 7 3 матрица и mean(A) 1 3 вектор, MATLAB неявно расширяет вектор, как будто это имело тот же размер как матрица, и операция выполняется как нормальное поэлементное минус операция.
Требование размера для операндов — то, что для каждой размерности, массивы должны или иметь тот же размер или одного из них, 1. Если это требование удовлетворяется, то размерности, где один из массивов имеет размер 1, расширены, чтобы быть одного размера как соответствующая размерность в другом массиве. Для получения дополнительной информации см. «Совместимые размеры массивов для основных операций».
Другая область, где неявное расширение полезно для векторизации, — то, если вы работаете с многомерными данными. Предположим, что вы хотите выполнить функцию, F , из двух переменных, x и y .
F(x,y) = x*exp(-x2 — y2)
Выполнять эту функцию в каждой комбинации точек в x и y векторы, необходимо задать сетку значений. Для этой задачи необходимо избегать использования циклов, чтобы выполнить итерации через комбинации точки. Вместо этого если один из векторов является столбцом, и другой строка, то MATLAB автоматически создает сетку, когда векторы используются с оператором массивов, таким как x+y или x-y . В этом примере, x 21 1 вектор и y 1 16 вектор, таким образом, операция производит 21 16 матрица путем расширения второго измерения x и первая размерность y .
В случаях, где вы хотите явным образом создать сетки, можно использовать meshgrid и ndgrid функции.
Операции логического массива
Логическое расширение объемной обработки массивов должно векторизовать сравнения и принятие решения. Операторы сравнения MATLAB принимают векторные входные параметры и возвращают векторные выходные параметры.
Например, предположите при сборе данных от 10 000 конусов, вы записываете несколько отрицательных величин для диаметра. Можно определить, какие значения в векторе допустимы с >= оператор:
MATLAB позволяет вам выполнять логический AND или OR на элементах целого вектора с функциями all и any , соответственно. Можно выдать предупреждение если все значения D ниже нуля:
MATLAB может также сравнить два вектора с совместимыми размерами, позволив вам ввести дальнейшие ограничения. Этот код находит все значения, где V является неотрицательным и D больше, чем H :
Чтобы помочь сравнению, MATLAB содержит специальные значения, чтобы обозначить переполнение, потерю значимости и неопределенные операторы, такие как Inf и NaN . Логические операторы isinf и isnan существуйте, чтобы помочь выполнить логические тесты для этих специальных значений. Например, часто полезно исключить NaN значения от вычислений:
Примечание
Inf == Inf возвращает true; однако, NaN == NaN всегда возвращает false.
Матричные операции
При векторизации кода часто необходимо создавать матрицу с конкретным размером или структурой. Методы существуют для создания универсальных матриц. Например, вам может быть нужна матрица 5 на 5 равных элементов:
Функциональный repmat обладает гибкостью в создании матриц из меньших матриц или векторов. repmat создает матрицы путем повторения входной матрицы:
Упорядоченное расположение, устанавливая и считая операции
Во многих приложениях вычисления, сделанные на элементе вектора, зависят от других элементов в том же векторе. Например, вектор, x, может представлять набор. Как выполнить итерации через набор без for или while цикл не очевиден. Процесс становится намного более ясным и синтаксис, менее громоздкий, когда вы используете векторизованный код.
Устранение избыточных элементов
Много различных путей существуют для нахождения избыточных элементов вектора. Один путь включает функциональный diff . После сортировки векторных элементов равные смежные элементы производят нулевую запись, когда вы используете diff функция на том векторе. Поскольку diff(x) производит вектор, который имеет тот меньше элемента, чем x , необходимо добавить элемент, который не равен никакому другому элементу в наборе. NaN всегда удовлетворяет это условие. Наконец, можно использовать логическую индексацию, чтобы выбрать уникальные элементы в наборе:
Подсчет элементов в векторе
Вместо того, чтобы просто возвращать набор или подмножество, x , можно считать случаи элемента в векторе. После векторных видов можно использовать find функция, чтобы определить индексы нулевых значений в diff(x) и показать, где элементы изменяют значение. Различие между последующими индексами от find функция указывает на количество случаев для конкретного элемента:
Действия с векторами и матрицами в MATLAB
РАБОТА В РЕЖИМЕ ПРЯМЫХ ВЫЧИСЛЕНИЙ
1) Вычисляемое выражение набирается, редактируется (если нужно) в командной строке, ввод завершается нажатием клавиши ENTER.
Средства для редактирования в командной строке: клавиши ← и → — перевод курсора вдоль строки, Home, End – быстрый переход к началу и концу строки, ↑ и ↓ — клавиши перелистывания строк (с их помощью в командной строке можно восстановить для редактирования и выполнения ранее выполнявшиеся операторы), клавиши Delete и Backspace (← в верхней строке клавиатуры) – для удаления символа над курсором и слева от него. Кроме того, в командном окне имеется сверху панель инструментов, позволяющая делать стандартные операции копирования, удаления, вставки из буфера обмена и др.
2) Для переноса длинного выражения на другую строку используется многоточие (… — три или более точек в конце строки). При нажатии ENTER курсор переместится в начало следующей строки, где можно продолжать набор оператора.
3) Основные системные переменные:
pi – значение числа π
ans – хранит результат последней выполненной операции (в том числе
и если этот результат – массив чисел). К ней можно обращаться
по имени, что бывает удобно при программировании.
inf — символ машинной бесконечности. Положительная величина,
которая больше чем любое представимое в оперативной памяти
компьютера положительное число, что так же бывает удобно
иметь при составлении алгоритмов.
i- мнимая единица – sqrt(-1). MATLAB выполняет действия в алгебре
комплексных чисел вида z = x+ i*y, где x – вещественная часть,
y – мнимая часть числа.
4) Знаки основных арифметических операций:
‘+ ‘- сложение, ‘-‘ – вычитание , ‘*’ – умножение, ‘/’ – деление слева направо, ’’ – деление справа – налево, ‘^’ – возведение в степень.
Знаки операций применимы к векторным и матричным операндам.
Так, результаты операций A/B и BA могут быть различны. Кроме того, одна из этих операций может быть возможна, в то время как другая – нет. Первая: A/B выполняется как A*inv(B), а вторая: BA – как inv(B)*A. Вспомним, что умножение матриц не обладает свойством коммутативности. Знак умножения, примененный к матричным операндам, выполняет операцию умножения матриц по правилам матричной алгебры.
5)Постановка знака ‘;’в конце вычисляемого выражения не обязательна, его присутствие блокирует вывод на экран компьютера результата выполнения выражения, после которого он поставлен. Установка точки с запятой в конце каждого оператора желательна при написании М-программ, особенно – когда промежуточными результатами являются массивы чисел. (Заметим, правда, что иногда полезно умышленно опустить точку с запятой, если вывод вычисленного значения оператора желателен).
Действия с векторами и матрицами в MATLAB
Перейдем теперь в командное окно MATLAB. Выполните в командном окне предлагаемые далее действия с матрицами. При этом данный текст лучше не закрывать, а свернуть его, нажав на кнопку “-“ в правом верхнем углу окна Microsoft Word. (В этом случае вы сможете восстановить этот текст в процессе работы, активизируя его нажатием левой клавиши мыши на нижней панели)
Задание 1: (действия с векторами)
1) Введите вектор ‘a’ из 9 элементов. С экрана элементы вектора вводятся в квадратных скобках, разделяемые пробелом.
a = [1 2 3 4 6 4 3 4 5] % Вводите свой вектор с другими значениями.
Нажмите ENTER, посмотрите на сообщение на экране.
2) Теперь выполните то же но с точкой с запятой:
a = [1 2 3 4 6 4 3 4 5]; % Используйте клавиши перелистывания ↑ и ↓, чтобы не
% повторять набор заново!!
Нажмите ENTER, посмотрите на сообщение на экране.
3) Прибавьте число 2 к элементам вектора а :
b = a + 2 % Сейчас мы умышленно не ставим точку с запятой, чтобы
% посмотреть на результат
4) Транспонируем вектор b:
C=b’ % Знак транслонирования матрицы – апостроф ‘ (соответствует
% клавише буквы Э на нижнем регистре латиницы)
5) Попробуйте выполнить операцию
D= a+C % убедитесь, что она невозможна, поймите почему (?).
6) Постройте график значений элементов вектора b относительно номера компоненты:
MATLAB может строить графики, используя указываемые ему символы.
Постройте тот же график звездочками:
ГЕНЕРАЦИЯ ВЕКТОРОВ (ранжированных переменных, т.е. массивов с постоянным шагом)
X=1:10 % шаг 1 % не ставьте точки с запятой, наблюдайте результаты
Y=0:0.25:1 % шаг 0.25
Z=0:pi/4:2*pi % шаг pi/4
Задание 2: (действия с матрицами)
% Создание матриц производится так же как и создание векторов, при этом
% используется знак (;) , чтобы отделить вводимые строки матрицы.
Введите матрицу размерности (3,3):
A = [1 2 0; 2 5 -1; 4 10 -1] % Введите свои значения. Не ставьте блокировку (;),
% чтобы следить за результатами.
Транспонируйте матрицу ‘A’ :
Возведите квадратную матрицу в 5 степень:
Найдите обратную матрицу:
I =A*inv(A) % ясно, что должна получиться единичная матрица
Вычислите определитель матрицы:
Найдите собственные значения матрицы:
% Функция «poly» генерирует вектор, элементами которого являются
% коэффициенты характеристического многочлена матрицы:
% Функция “round” округляет до ближайшего целого
% Корни многочлена p – характеристические значения исходной матрицы
% Таким образом, мы можем найти собственные значения матрицы оператором
roots(p) % Выполните вычисления этим способом
% В любой момент мы можем получить список значений переменных, хранящихся в памяти
% используя команды «who» или «whos».
Выполните:
% Вы можете получить на экране значение любой переменной, набрав в командной строке имя переменной и нажав вслед за тем ENTER.
ПОЭЛЕМЕНТНОЕ ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
Арифметические операции умножения, деления и возведения в степень имеют своих двойников с поэлементным выполнением. Поясним: пусть
x=[1 2 3 4] и y=[5 6 7 8].
Предположим, что вам хотелось бы перемножить (поделить, возвести в степень) элементы векторов x и y.
Если мы напишем x*y или x/y или x^3, то получим сообщение об ошибке, так как строки нельзя перемножить, разделить друг на друга по правилам матричной алгебры (несоответствие размерностей). Однако для получения желаемого результата в MATLAB есть дубли арифметических операций. Они имеют те же значки, что и основные операции, но с точкой перед знаком операции.
Выполните в командном окне:
x.*y % Результат – вектор, элементы которого равны произведениям соответствующих элементов векторов x и y
x./y % Элементы x будут поделены на соответствующие элементы y
x.^3 % Элементы вектора x будут возведены в 3-ю степень.
MATLAB работает с комплексными числами и бесконечными величинами.
ГЕНЕРАЦИЯ СПЕЦИАЛЬНЫХ МАТРИЦ:
Для создания специальных матриц существуют функции:
zeros – создание матрицы с нулевыми элементами,
ones — создание матрицы с единичными элементами,
rand – создание матрицы со случайными элементами (равномерно на [0,1] распределенными случайными числами),
Matlab
Материал из MachineLearning.
Matlab — язык программирования и система научных и инженерных расчетов, построенная на основе интерпретатора этого языка. Matlab, сокращение от «Matrix Laboratory», предназначен в первую очередь для выполнения алгоритмов, использующих векторы и матрицы.
Язык программирования Matlab (иногда также называется M-code) изначально был разработан с целью упрощения работы с процедурами широко распространенной в 70-80 годы библиотеки алгоритмов линейной алгебры LINPACK. Впоследствии он развился в мощный язык с богатым набором типов данных.
Оболочка Matlab состоит из командной строки, текстового редактора со встроенным отладчиком и окнами со списком файлов, списком видимых переменных и с историей введенных команд.
Matlab имеет большое число пакетов (toolboxes) — как собственных, так и распространяемых независимыми разработчиками часто на условиях открытого кода. В Matlab включен Simulink — визуальный редактор для моделирования динамических систем.
Содержание
Краткий обзор языка Matlab
Векторы и матрицы
добавть элемент к вектору-столбцу
добавить элемент в вектору-строке
текстовая строка — это вектор
Операции
Типы данных
итератор может быть элементом вектора
или вектором-столбцом матрицы
Условный переход
оператор if использует как логические так и целочисленные переменные; можно использовать операции ‘and(a, b)’, синоним ‘a && b’ и ‘or(a, b)’, синоноим ‘a || b’
но удобнее использовать
Эффективное программирование
Matlab в своих базовых конструкциях сложнее C/C++, поэтому желательно смотреть чужой код с целью выявления удачных приемов.
Пример 1. Примечание: представленные в обзоре времена работы зависят от конкретного компьютера, системы, на которой он работает, загруженности компьютера в момент вычисления примера, числа свободных положительных зарядов на шерсти Вашего кота. Короче, много от чего. Поэтому если при запуске скрипта на Вашем компьютере времена работы не будут совпадать с тем, что вы видете в этом обзоре — не пугайтесь, это нормально и ожидаемо. Главная мысль состоит в том, что правильно написанный код на MATLAB начинает не только быстрее работать, но и (почти всегда) лучше выглядеть и читаться.
Игрушечный пример для иллюстрации способов работы с функциями и векторами в среде MATLAB
Получили вектор, компоненты которого — случайные числа, полученные из равномерного на отрезке [0,1] распределения. Теперь возьмем от каждого его элемента логарифм различными способами.
Способ первый — совсем плохой, самый медленный — в цикле наращивать размер вектора
Результат работы такой:
duration of the very bad method on 10000 elements Elapsed time is 0.286904 seconds.
Способ второй — заметно луче — заранее зарезервировать память под результат применения функции логарифма. Для наглядности увеличим размер вектора еще в 10 раз.
Результаты работы этого кода:
duration time of a bit improved method on 1000000 elements Elapsed time is 0.062692 seconds.
Способ третий — самый правильный и самый быстрый, работает мгновенно — взять функцию логарифма (то, что именно логарифма — не принципиально) сразу от вектора
duration of the best method on 1000000 elements Elapsed time is 0.015231 seconds.
Этот пример еще более игрушечный, чем предыдущий, но все же о нем тоже надо рассказать. MATLAB расшифровывается как matrix laboratiry, поэтому важно помнить, что MATLAB оптимизирован под вычисление произведений матрица на матрицу и матрица на стобец. Поэтому в MATLAB правильно писать операции над матрицами так, как это происходит при решении задач линейной алгебры.
То есть, если нам надо перемножить матрицы A и B, то не надо писать никаких циклов, а нужно просто написать C = A * B
Результат: Matrix multiplication time Elapsed time is 0.612797 seconds.
Здесь надо заметить, что при использовании > метода умножения матриц размеров n * n время получения ответа равно O(n^3). Если предположить, что компьютер делает в секунду в среднем 10^6 операций, то что-то тут не сходится — получится, что компьютер за 0.612797 секунд выполнил 8*10^9 операции. Дело в том, что в MATLAB реализован быстрый алгоритм умножения матриц, в этом алгоритме сложность менее, чем кубическая от размера входных матриц. Поэтому при перемножении матриц важно пользоваться именно записью C = A * B, а не ударяться в написание тройного цикла — тот уж точно выполнит все 8*10^9 операций и хорошо, если за пару суток управится.
Пример 3. Есть еще несколько функций, которые заточены под матричные и векторные операции — это функции repmat и reshape. Остановимся на них подробнее.
Важно. Практика показала, что repmat и reshape в разных версиях MATLAB могут отличаться, поэтому будьте внимательны и осторожны при их использовании.
Пусть мы хотим сделать матрицу, в которой все строки одинаковые. Тут возможны несколько способов реализации. Способ первый — цикл.
Elapsed time is 1.596466 seconds.
Способ второй — использовать функцию repmat()
Elapsed time is 0.311417 seconds.
Пусть теперь нам захотелось продублировать строки матрицы A, то есть вместо каждой строки матрицы написать две таких же строки, одну под другой. Как сделать это эффективно, то есть БЕЗ ЦИКЛОВ? Тут на помощь приходит функция reshape() (еще раз напоминаю про возможные различия в разных версиях).
Дальше ловкость рук и никакого мошенничества =)
Читателю предоставляется возможность разобраться с тем, как получилась матрица B, самостоятельно.
Скорее всего при первом прочтении предыдущий пример про дублирование строк кажется высосанным из пальца, поэтому продолжим и покажем, где в реальной жизни будет очень полезно использовать операции repmat и reshape, позволяющие не использовать циклы явно и ускорять операции в Matlab.
Пример 4, строим усеченную синусоиду, вариант 1
Пример 4, вариант 2
следует избегать циклов там, где можно использовать матричные операции;
пример 5, вариант 1
пример 5, вариант 2
Функции
функции бывают embedded, private, public, inline, см. doc; при написании желательно организовать код так, чтобы функция возвращала корректный результат независимо от того, что было подано в качестве аргумента — скаляр, вектор или матрица
пример, стандартизация вектора
функции могут включать варьируемое число входных и выходных аргументов
выполнение функций как текстовых строк в теле программы
пример, как сделать случайную k-индексную матрицу
инлайн-функции — функции задаваемые в теле программы
Мини-тест
Рекомендации программистам
- Matlab прост в освоении. Нет понятий проект, компилятор, библиотека.
- Есть командная строка, редактор m-code, path list и help.
- Если вы хотите использовать функцию из toolbox просто используйте ее имя в коде.
- Коллизий имен не существует. Старое имя исчезает при его перезагрузке.
- Функции вызываются по имени согласно path list (см. основное меню). Следите на очередностью в этом списке.
- Почитайте help, если вам нужно написать известный алгоритм, возможно он уже написан.
- В частности, функции, работающие с множествами: intersect, ismember, issorted, setdiff, setxor, union, unique и очень полезная функция is* находятся в Help navigator -> MATLAB -> Functions — Categorical list.
- Wikipedia.org содержит много библиотек для Matlab.
- Не нужно избегать сложных алгоритмов. Часто задачи классификации, регрессии, оптимизации решаются в одну строку кода.
- Желательно документировать свои функции так:
- первая строка — назначение функции
- вторая строка — имя функции и ее входные и выходные аргументы
- варианты использования функции
- пример использования функции
- Изучите все структуры данных в Matlab, их очень много. В последней версии (на момент написания основной части — R2008a) появилась поддержка работы с классами.
- Избегайте циклов, если возможно, используйте операции работы с матрицами.
- Имеется возможность подключать функции, написанные на C (в виде специально скомпилированных библиотек).
Некоммерческие версии
Matlab — коммерческая программа. Существуют некоммерческие варианты, совместимые по базовым конструкциям языка, но не совместимые по библиотечным функциям. Например, Scilab, Euler Math Toolbox и Octave.
События
Несколько раз в год фирма «Софтлайн» проводит семинары, посвященные новым версиям и отдельным подсистемам Matlab. Проводится Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB».