MATLAB – это мощная техническая вычислительная система для обработки научных и инженерных расчетов. Название MATLAB расшифровывается как Matrix Laboratory, потому что система была разработана, чтобы сделать вычисления матриц как можно более простыми. Матрица – это массив чисел, организованных в m строк и n столбцов. Наглядным примером является следующий массив m × n = 2 × 3:
Любой из элементов в матрице может быть извлечен с помощью индексов строк и столбцов, которые определяют его местоположение. Элементы в этом примере выделены следующим образом: A (1,1) = 1, A (1,2) = 3, A (1,3) = 5, A (2,1) = 2, A (2,2) = 4, A (2,3) = 6. Первый индекс определяет номер строки, отсчитываемый сверху вниз; второй индекс – это номер столбца, отсчитываемый слева направо. Это общепринятое соглашение, используемое в MATLAB для поиска информации в массиве. Компьютер полезен тем, что он может быстро выполнять многочисленные вычисления, поэтому работа с большими числовыми наборами данных, перечисленными в таблицах как массивы или матрицы строк и столбцов, довольно эффективна.
Одна из многих вещей, которые нравится многим инженерам в MATLAB (и это отличает ее от многих других систем компьютерного программирования, таких как C++ и Java), заключается в том, что вы можете использовать его в интерактивном режиме. Это означает, что вы вводите некоторые команды в специальном приглашении ввода MATLAB и сразу получаете результаты. Решаемые таким образом задачи могут быть очень простыми, например, найти квадратный корень, или очень сложными, например, найти решение системы дифференциальных уравнений. Для решения многих технических проблем вы вводите только одну или две команды – MATLAB выполняет большую часть работы за вас.
Есть три основных требования для успешных приложений MATLAB:
- Вы должны узнать точные правила написания операторов MATLAB и использования утилит MATLAB.
- Вы должны знать математику, связанную с проблемой, которую хотите решить.
- Вы должны разработать логический план атаки (алгоритм) для решения конкретной проблемы.
Рабочая среда
Есть два способа работы в MATLAB. Первый способ – работать в командной строке, записывая по одной команде за раз. Второй способ – написать скрипт (файл .m, имеющий последовательный набор команд) и запустить его из командной строки, просто набрав его имя. Например, чтобы запустить файл сценария a.m, вы просто пишете в командной строке следующее:
1 >>a
По умолчанию командная строка обозначается символом >>. Вы вводите команду в командной строке и затем нажимаете клавишу Enter, чтобы выполнить ее.
Принцип REPL
Командная строка MATLAB работает по принципу REPL, что означает Read-Evaluates-Prints-Loop. Когда что-то вводится в командную строку MATLAB, язык Julia:
- Читает, что пользователь вводит.
- Оценивает, что читает.
- Распечатывает возвращаемое значение после оценки.
- Зацикливается и делает все заново.
Все команды MATLAB обрабатываются как выражения для оценки в REPL. Многие среды программирования, такие как интерактивная оболочка Python, а также формат ноутбука Jupyter, используют один и тот же подход. Новый язык под названием Julia также имеет REPL и работает аналогичным образом.
Типы данных
При назначении данных переменной важно понимать, что данные могут быть определены как различные объекты, определенные их типами данных, следующим образом:
- logical: этот тип данных хранит логические значения 1 или 0, которые могут работать с логическими операторами, такими как AND, OR, XOR и другими;
- char: этот тип данных хранит буквенные символы и строки (группы символов, записанные в последовательности);
- int8, int16, int32 и int64: данные этого типа хранятся в виде целых чисел в 8, 10, 32 и 64 бита соответственно. Размер целого числа определяется количеством битов;
- uint8, uint16, uint32 и uint64: этот тип данных хранит целочисленные данные без знака в 8, 16, 32 и 64 битах соответственно;
- double и single: данные этого типа хранятся как плавающие типы двойной и одинарной точности соответственно. Десятичные числа представлены типами данных с плавающей запятой. Данные с одинарной точностью занимают 4 байта (32 бита), а с двойной точностью – 8 байтов (64 бита) для хранения чисел с плавающей запятой;
- double complex and single complex: комплексные числа имеют действительные и мнимые части, которые хранятся отдельно. Эти числа могут быть сохранены как числа одинарной или двойной точности с использованием этих типов данных.
В системе с одинарной точностью 23 бита хранят биты дроби (то есть числа после десятичной запятой), 8 бит запоминают показатель степени (то есть числа перед десятичной запятой), а 32-й бит резервируется для хранения знака.
В системе с двойной точностью 52 бита хранят биты дроби (то есть числа после десятичной запятой), 11 бит запоминают показатель степени (то есть числа перед десятичной запятой), а 64-й бит зарезервирован для хранения знака.
Единственная и двойная точность имеет значение, когда важна точность результата. В таких случаях, как GPS-позиционирование снаряда, летящего на высоких скоростях, результаты должны быть максимально точными для большей точности попадания.
Переменные
Для временного хранения значений мы используем переменные, которые хранят значение в определенной ячейке памяти и адресуют его с помощью символа или набора символов (называемых строками). Например, вы можете сохранить значение 1/10 * pi в качестве переменной a, а затем использовать его в уравнении, подобном следующему:
Чтобы сделать этот расчет:
Нужно выполнить:
Следовательно, символ = работает как оператор присваивания. Он присваивает значение справа переменной, названной слева. Многократные назначения могут быть выполнены с помощью оператора запятой (,). Кроме того, если вы не хотите выводить результаты на экран, вы можете отключить это, используя оператор (;).
Соглашения о названиях переменных
Существуют некоторые соглашения об именах для переменных, которые необходимо соблюдать, чтобы избежать ошибок.
- Имена не должны начинаться с цифры; тем не менее, числа могут быть использованы в любом месте после этого;
- Имена переменных чувствительны к регистру;
- Ключевые слова не могут быть использованы в качестве имен;
- Имена могут включать подчеркивание (_).
При именовании переменной, если вам нужно проверить, что данное имя является ключевым словом, вы можете использовать встроенную функцию iskeyword(name). Простой ввод iskeyword() создает список ключевых слов, как показано здесь:
Список переменных
Во время работы над проектом полезно отслеживать все переменные, используемые в проекте, чтобы избежать ошибок из-за дублирования имен. Вы можете получить список всех переменных с помощью команд who и whos. В то время как команда who просто представляет список переменных в рабочей области, whos приводит ее с дополнительной информацией, такой как размер переменной, количество байтов, используемых для хранения переменной, и тип переменной.
Обратите внимание, что список переменных, созданных в этом примере, представляет текущее состояние компьютера. Используя who и whos, вы можете отслеживать требования к памяти. Помните, что разумное использование ресурсов памяти важно, особенно в системах на основе Raspberry Pi. Чтобы стереть сохраненные переменные, вы можете использовать команду очистки. Также важно отметить, что список переменных зависит от сеанса. Когда вы выходите из сеанса, закрывая MATLAB с помощью значка или с помощью exit, список переменных стирается из памяти.
Глобальные и локальные переменные
Переменная, объявленная глобально (то есть внутри основной программы), называется глобальной переменной, тогда как переменная, объявленная локально в функции, называется локальной переменной. Чтобы определить глобальную переменную, вы используете оператор global. После определения он остается неизменным независимо от любого нового определения, если только вы не введете команду очистки для удаления имен и значений переменных из памяти.
Как уже было видно, a = 1 остается неизменным независимо от следующего определения, a = 2. Когда в командной строке выдается команда clear, все имена и значения переменных удаляются из памяти, и имя переменной можно использовать снова. На этот раз, если она не определена как глобальная переменная, ее значение можно изменить несколько раз. Команда isglobal() позволяет проверить, определено ли имя переменной как глобальная переменная.
Глобальные переменные используются для определения констант во время численных расчетов. Предположим, вы хотите, чтобы определенные переменные меняли значения, поэтому вы можете сделать эти неизменные значения глобальными переменными, указав имя по вашему выбору. Предопределенные переменные, такие как pi, e и т. д., определяются аналогичным образом.
Векторы
Переменные, такие как >> a = 2 <Enter> и >> b = 3; <Enter>, называются скалярами; они однозначные. MATLAB также обрабатывает векторы (обычно называемые массивами), которые являются ключом ко многим его мощным функциям. Самый простой способ определения вектора, в котором элементы (компоненты) увеличиваются на одинаковую величину, – это утверждение типа:
>> x = 0 : 10; <Enter>
Это двоеточие (:) между 0 и 10. Нет необходимости оставлять пробел по обе стороны от него, за исключением того, чтобы сделать его более читабельным. Введите x, чтобы проверить, что x является вектором; это вектор строки, состоящий из 1 строки и 11 столбцов. Введите следующую команду, чтобы убедиться, что это так:
>> size(x) <Enter>
Часть реальной мощи MATLAB наглядно иллюстрируется тем фактом, что другие векторы теперь могут быть определены (или созданы) в терминах только что определенного вектора x. Попробуйте ввести следующее
>> y = 2 .* x <Enter>
>> w = y ./ x <Enter>
и
>> y = sin(x) <Enter>
(без точек с запятой). Обратите внимание, что первая командная строка создает вектор y путем умножения каждого элемента x на коэффициент 2. Вторая командная строка является операцией массива, которая создает вектор w, беря каждый элемент y и деля его на соответствующий элемент x. Поскольку каждый элемент y в два раза больше соответствующего элемента x, вектор w является вектором-строкой из 11 элементов, все из которых равны 2. Наконец, z – это вектор с sin(x) в качестве его элементов.