"Вычисления, визуализация и программирование в среде 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 »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 |
|
|