"MATLAB 7 (Наиболее полное руководство в подлиннике)" - читать интересную книгу автора (Ануфриев И.Е., Смирнов А.Б., Смирнова Е.Н.)По умолчанию все числа (элементы массивов) хранятся с двойной точностью (double) и занимают 8 байтов. Большие массивы требуют для хранения значительных объемов памяти. Для уменьшения объема занимаемой массивами памяти можно применять другие способы хранения элементов массива: single для вещественных чисел, требующих для размещения 4 байта, и ints, intie, int32 —для целых чисел, занимающих ], 2 или 4 байта соответственно. Использование таких данных значительно экономит память и не влияет на функциональные возможности пакега MATLAB.
Для изменения точности представления чисел предназначены одноименные с типом (Class) данных функций single, ints, intie, int32: >> q4 = single(s4); » q3 = int32(s3) ; » q2 = intl6{s2) ; >> ql = int8(sl); Если теперь посмотреть распределение памяти под массивы, то легко заметить существенную разницу в отведенной для хранения памяти: » whos Name Size Bytes Class qi 1x4 4 int8 array q2 1x4 3 intl6 array q3 1x4 16 int32 array q4 1x4 16 single array si 1x4 32 double array s2 1x4 32 double array S3 1x4 32 double array s4 1x4 32 double array Для массивов большой размерности экономия памяти может быть существенной. Выполнение арифметических операций с вещественными числами разного типа допустимо и дает результат с наименьшей точностью — single: » qs44 = q4 + s4; >> whos qs44 Глава 2. Работа с массивами 55 Name Size Bytes Class qs44 1x4 16 single array Попытка выполнить арифметические операции над целыми числами разных типов приводит к ошибке: » q31 = q3 + ql ??? Error using --> plus Более того, при преобразовании целого числа, когда для точного представления не хватает отводимой памяти, получается максимальное число для данного типа (т. е. неверный результат) без предупреждения об этом: » Wl = 34567; » rl = intB(wl) rl =¦ 127 » tl = intlfi(wl) tl = 32767 Поэтому применение целых чисел, имеющих меньшую точность представления, ограничено. Вернемся к работе с векторами и матрицами, используя принятое по умолчанию представление чисел double. Из нескольких вектор-столбцов можно составить один, используя квадратные скобки и разделяя исходные вектор-столбцы точкой с запятой: >> vl = [1; 2]; » v2 - [3; А; 5]; » v = [vl; v2] V = 1 Для сцепления вектор-строк также применяются квадратные скобки, но сцепляемые вектор-строки отделяются пробелами или запятыми: » vl = [pi pi/2]| » v2 в. [pi/3 pi/4 pi/5]; 56 ¦ Часть I, Основы работы в MATLAB » v = [vl v2] V = 3.1416 1.570В 1.0472 |
|
|