"Вычисления, визуализация и программирование в среде MATLAB 5.x" - читать интересную книгу автора (Мартынов Н. Н., Иванов А. П.)__-III Рисунок 1.14
26 Глава 1. Числовые массивы в системе MATLAB Таким образом, система MATLAB распознает «геометрию» этого одномерного массива и наглядно отображает его, располагая элементы массива b для показа в своем окне вертикально. Полученную ранее матрицу а размером 3x2 (первым указывается число строк, вторым - число столбцов) можно сформировать также вертикальной конкатенацией вектор-строк: а = [ [1 2]; [3 4]; [5 б] ] или горизонтальной конкатенацией вектор-столбцов: а = [ [1; 3; 5] , [2; 4; 6] ] Вертикальную и горизонтальную конкатенации можно также осуществить с помощью функции cat. Для вертикальной конкатенации ее первый параметр равен 1: а = cat( 1, [1 2], [3 4], [5 б] ) а для горизонтальной конкатенации он равен 2: а = cat( 2, [1; 3; 5], [2; 4; б] ) Чтобы узнать размеры двумерного массива и «геометрию» векторов (вектор-столбцы или вектор-строки), нужно использовать функцию size. Для рассмотренного выше двумерного массива а получается следующий результат: size( a ) ans = 3 2 где первым показывается число строк, а вторым - число столбцов. Теперь применим эту функцию к одномерным массивам. Вот что из этого получается для сформированного выше вектор-столбца Ь, состоящего из трех строк и одного столбца: size( b ) ans = 3 1 Наконец, попробуем применить эту функцию к переменной, состоящей из единственного числового значения, то есть к скаляру: var = 5; size( var ) ans = 1 1 MATLAB 5.x. Вычисления, визуализация, программирование 27 Отсюда видно, что система MATLAB трактует даже скалярные по существу величины как двумерные массивы размером 1x1. Векторы рассматриваются как матрицы, размер которых по одному из направлений равен единице. В системе MATLAB существует также пустой массив, то есть массив, не содержащий данных. Он обозначается квадратными скобками [ ] (между которыми нет операндов) и трактуется как матрица размером 0x0. Поэтому для ранее созданных переменных a, b, var. и пустого массива [ ] функция ndims возвратит число 2 {размерность массива). Структуру созданных массивов можно также узнать с помощью команды whos, которая работает со всеми переменными из текущего рабочего пространства системы MATLAB (см. рис. 1.15). , -У MATLAB Command Window File Edit Window Help »whos | I a 3x2 4 8 double array i ans 1x2 16 double array | b 3x1 24 double array ! var lxl 8 double array i; Grand totai is 12 elements using 96 bytes A Jj___'„_______________....._..............__.........JifiJ Рисунок 1.15 Итак, все, с чем работает MATLAB, является массивами различной размерно-,сти и размеров. Основным объектом встроенного в эту систему М-языка является массив. Размерность массива можно узнать функцией ndims, а размеры-функцией size. Тип массива определяется типом его элементов. Мы пока работаем с числовыми массивами типа double, элементами которых служат вещественные или комплексные числа (точнее, их приближенные машинные представления). Продолжим рассмотрение способов создания двумерных числовых массивов (матриц). Как и рассмотренные ранее одномерные массивы (векторы), двумерные массивы можно создать с помощью операции индексации, прописывая по отдельности его элементы необходимыми числовыми значениями. Например, рассмотренный ранее массив а можно создать следующим образом: а(1,1) = 1; а(1,2) = 2; а(2,1) = 3; а(2,2) = 4; а(3,1) = 5; а(3,2) = 6; 28 Глава 1. Числовые массивы в системе MATLAB где для доступа («по чтению») к отдельным элементам используются круглые скобки (операция индексации), внутри которых через запятую перечисляются индексы. Первым указывается номер строки, вторым - номер столбца. Как и в случае одномерных массивов, это решение является неэффективным, так как по мере присваиваний системе MATLAB приходится перестраивать структуру массива. Проблема легко преодолевается, если присваивание а(3,2) = б; поместить первым. Кроме того, можно сразу создать двумерный масссив нужного размера функциями ones или zeros: ones( 3, 2 ) или zeros ( 3, 2 ) а затем осуществить присваивания отдельным элементам нужных значений (причем порядок присваиваний в этом случае уже не имеет значения). У этих функций первый параметр задает число строк, а второй - число столбцов. И наконец, если после формирования массива X потребуется, не изменяя элементов массива, изменить его размеры, можно воспользоваться функцией reshape( X, М, N ) где М и N - новые размеры массива X (М - число строк, N - число столбцов). Возникнет ошибочная ситуация, если количество элементов в массиве X не равно произведению М на N. К примеру, если требуется ранее сформированную матрицу а размером 3x2 превратить в матрицу размером 2 х 3, то вызываем функцию reshape: reshape! a, 2, 3 ) ans = 1 5 4 3 2 6 |
|
|