Раздел: Документация
0 ... 19 20 21 22 23 24 25 ... 365 Просмотрите появившуюся в окне Workspace информацию. Векторы я,Ьи с хранятся в двумерных массивах. В столбце Size указано 3x1, т. е. массивы имеют по три строки и одному столбцу, каждый из них занимает 24 байта памяти (столбец Bytes). Аналогичные сведения можно получить при помощи встроенных функций ndims И size: » па = ndims(а) па = 2 » sa = size(а) sa = 3 1 На первый взгляд может показаться, что ndims и size лишь дублируют информацию окна Workspace. Однако они позволяют не только вывести характеристики массивов в командное окно, но и записать их в переменные для дальнейшего использования, что существенно при создании собственных приложений в MATLAB. В главе J было замечено, что числа в MATLAB представляются в виде двумерного массива один на один. Теперь должно быть понятно, почему при сложении векторов используется тот же знак плюс, что и для сложения чисел. Естественно, для нахождения разности векторов следует применять знак минус, с умножением дело обстоит несколько сложнее. Г Примечание Если размеры векторов, к которым применяется сложение или вычитание, не совпадают, то выдается сообщение об ошибке. Особенность MATLAB представлять все данные в виде массивов является очень удобной. Пусть, например, требуется вычислить значение функции sin сразу для всех элементов вектора с (который хранится в массиве с) и записать результат в вектор d. Используйте следующий оператор присваивания: » d = sin(c) d = 0.8546 0.5010 0.5П2 Итак, встроенные в MATLAB элементарные функции приспосабливаются к виду аргументов; если аргумент является массивом, то результат функции будет массивом того же размера, но с элементами, равными значению функции от соответствующих элементов исходного массива. Убедитесь в этом еще на одном примере. Если необходимо найти квадратный корень из элементов вектора d со знаком минус, то достаточно записать: » sqrt(-d) ans - о + 0.9244i о + 0.7078i о + 0.75581 Оператор присваивания не использовался, поэтому MATLAB записала ответ в стандартную переменную ans. Ввод вектор-строки осуществляется в квадратных скобках, однако в отличие от вектор-столбца элементы следует разделять пробелами или запятыми. Операции сложения, вычитания и вычисление элементарных функций от вектор-строк производятся так же, как и с вектор-столбцами, в результате получается вектор-строка того же размера, что и исходные. »si = [3 4 9 2] si= 34 9 2 »s2 = [5 3 3 2] s2= 53 3 2 »s3 = si + s2 s3= 87 12 4 »s4 = log(s3) s4= 2.0794 1.9459 2.4849 1.3863 Выясните, в каких массивах хранятся вектор-строки. Для этого можно использовать окно Workspace или функции ndims, size и команду whos:
Итак, вектор-строки si, s2, s3 и s4 содержатся в двумерных массивах размерное™ один на четыре. Для определения длины вектор-столбцов или вектор-строк служит встроенная функция length: » L = length(si) L = A По умолчанию все числа (элементы массивов) хранятся с двойной точно-егью (double) и занимают 8 байтов. Большие массивы требуют для хранения значительных объемов памяти. Для уменьшения объема занимаемой массивами памяти можно применять другие способы хранения элементов массива: single для вещественных чисел, требующих для размещения 4 байта, и int8, intie, int32 — для целых чисел, занимающих 1, 2 или 4 байта соответственно. Использование таких данных значительно экономит память и не влияет на функциональные возможности пакета MATLAB. Для изменения точности представления чисел предназначены одноименные с типом (Class) данных функций single, int8, intl6, int32: >> q4 = single(s4); » q3 = int32(s3); » q2 = intl6(s2); » ql = int8(si); Если теперь посмотреть распределение памяти под массивы, то легко заметить существенную разницу в отведенной для хранения памяти:
Для массивов большой размерности экономия памяти может быть существенной. Выполнение арифметических операций с вещественными числами разного типа допустимо и дает результат с наименьшей точностью — single: >> qs44 = q4 + s4; >> whos qs44 0 ... 19 20 21 22 23 24 25 ... 365
|