"Вычисления, визуализация и программирование в среде MATLAB 5.x" - читать интересную книгу автора (Мартынов Н. Н., Иванов А. П.)

В заключение еще раз подчеркнем, что никаких специальных соглашений об именах комплекснозначных переменных и комплексных функций не существует. Переменные не требуют никакого предварительного описания. Все вычисления перетекают из вещественной области в комплексную абсолютно автоматически. Это происходит при задании комплексных операндов (используются зарезервированные имена i или j для мнимой единицы ) или при невозможности ограничиться лишь вычислениями с действительными числами (как в случае вычисления квадратного корня из минус единицы).
Формирование одномерных числовых массивов
В среде MATLAB можно производить вычисления с набором вещественных (или комплексных) чисел так же легко, как и с одиночными числами. Это является одним из самых заметных и важных преимуществ системы MATLAB над другими программными пакетами, ориентированными на вычисления и программирование.
Именованные наборы Чисел в различных языках программирования традиционно называют массивами. Всему массиву присваивается одно имя, а доступ к отдельным элементам массива осуществляется по целочисленному индексу, то есть по номеру элемента в массиве.
В зависимости от количества индексов, с помощью которых осуществляется доступ к отдельным элементам, массивы разделяются на одномерные (единственный индекс), двумерные (два индекса) и массивы больших размерностей (три индекса и более). Последние принято называть многомерными массивами.
Сначала рассмотрим одномерные числовые массивы. Это линейные наборы чисел, в которых позиция каждого элемента задается единственным числом -его номером. Можно говорить о первом элементе массива, о втором и т. д.
Массивы в системе MATLAB не образуют никакого нового типа данных. Числовые массивы (вещественные или комплексные) являются массивами элементов типа double. Настало время сообщить, что в системе MATLAB даже переменные, принимающие единственное числовое значение, то есть являющиеся по существу скалярами, в своем внутреннем представлении являются массивами,
20 Глава 1. Числовые массивы в системе MATLAB
состоящими из единственного элемента. Помимо памяти, необходимой для хранения числовых элементов (по 8 байт на каждый в случае вещественных чисел и по 16 байт в случае комплексных чисел), MATLAB автоматически при создании массивов выделяет еще и память для управляющей информации. В этой области памяти хранится размерность массива, количество элементов по каждой размерности, тип элементов (вещественные или комплексные) и т. д. Очень важно, что при построении массивов система MATLAB не требует от пользователя сразу же сообщить всю информацию. Пользователь может вводить ее постепенно, a MATLAB реагирует на нее соответственно и может даже динамически перестраивать структуру массива.
Для создания одномерного массива можно использовать операцию конкатенации. Эта операция обозначается с помощью квадратных скобок [ ]. Например, следующее выражение, использующее операцию конкатенации,
al = [ 1 2 3 ]
формирует переменную с именем al, являющуюся одномерным массивом из трех элементов (вещественных чисел). При использовании операции конкатенации объединяемые в одномерный массив элементы должны располагаться между открывающей и закрывающей квадратными скобками и отделяться друг от друга либо пробелом, либо запятой. Так что выражение
al = [ 1, 2, 3 ]
по своему результату абсолютно идентично предыдущему. Однако если массивы состоят из комплексных чисел или элементы задаются выражениями, то с точки зрения наглядности лучше использовать в качестве разделителя элементов запятую, как в следующем примере, в котором создается массив комплексных чисел:
d = [ 1 + 2i, 2 + 3i, 3 - 7i ];
Для доступа к индивидуальному элементу одномерного массива нужно применить операцию индексации, для чего после его имени указать в круглых скобках индекс (номер) элемента. В итоге третий элемент массива al обозначается как al (3), первый элемент- как al (1), второй элемент - как al (2).
Если требуется изменить третий элемент сформированного выше операцией конкатенации массива al, то можно применить операцию индексации и операцию присваивания:
al(3) = 789
Далее, пусть, к примеру, второй элемент массива al должен стать равным среднему арифметическому первого и третьего элементов. Для этого выполняем следующее действие:
al(2) = ( al(l) + al{3) ) / 2
MATLAB 5.x. Вычисления, визуализация, программирование 21
Количество элементов в одномерном массиве всегда можно узнать с помощью функции length:
length( al ) ans = 3
Как мы только что убедились на рассмотренных примерах, операцию индексации можно применять как справа от знака операции присваивания, так и слева от него. Про эти случаи говорят, что осуществляется доступ к элементу массива «по чтению» или «по записи». При попытке чтения несуществующего элемента (например, четвертого элемента массива al) в командном окне появится сообщение об ошибке (см. рис. 1.11).
•Л MATLAB Command Window
File__ ?dii_Window Help
»a(4) 3
??? Index exceeds matrix dimensions. Tj -d Пл Рисунок 1.11
В этом сообщении утверждается, что индекс превысил размер массива.
В то же время запись несуществующего элемента вполне допустима - она означает добавление нового элемента к уже существующему массиву:
al(4) = 7
Применяя после выполнения этой операции к массиву al функцию length, находим, что количество элементов в массиве возросло до четырех:
length! al ) ans =
4
То же самое действие - «удлинение массива al» - можно выполнить и с помощью операции конкатенации:
al = [ al 7 ]
Здесь операндами операции конкатенации являются массив al, состоящий из трех элементов, и добавляемый к нему четвертый элемент, равный 7. Можно подвергнуть конкатенации и несколько массивов. Например, следующий код:
а2 = [ al al 3 al ]
порождает одномерный массив а2, состоящий из 13 элементов: его первые четыре элемента повторяют элементы массива al, элементы с пятого по восьмой
IF
22 Глава 1. Числовые массивы в системе MATLAB
делают то же самое, девятый элемент равен числу 3 и, наконец, последние четыре элемента опять совпадают с соответствующими элементами массива al (см. рис. 1.12).
•5 MATLAB Command Window
File Edit Window Heip
» а2 = [ al al 3 al ] a2 = Columns 1 through 12
1 395 789 7 1 395 789 7 3 1 S9?> 789 Column 13 7
J
^S\ Рисунок 1.12
Теперь создадим одномерный массив аЗ без применения операции конкатенации. Используем другой способ: будем прописывать каждый элемент создаваемого массива по отдельности:
аЗ(1) = 67 аЗ(2) = 7.8 аЗ(3) = 0.017