Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Формирование многомерных массивов




 

Для создания многомерных массивов можно использовать те же приемы индексирования и применения встроенных функций, которые используются при создании двумерных массивов. Тем не менее в системе MATLAB добавлена специальная функция cat, которая позволяет сформировать структуру многомерного массива. Таким образом, можно определить три подхода к созданию многомерных массивов:

  • использование индексов;
  • использование встроенных функций для формирования массивов специального вида;
  • использование функции cat.

Использование индексов. Один из способов формирования многомерного массива вытекает из его представления как совокупности 2-мерных массивов, размещаемых на новых страницах. Он состоит в том, чтобы просто добавлять новые размерности для формирования нужных страниц (3-ю, 4-ю, 5-ю и т. д.).

Пример.

Сначала сформируем двумерный массив A:

A = [5 7 8; 0 1 9; 4 3 6];
A =

     
     
     

Этот массив имеет размерность 2 и размер 3х3.

Добавим новую страницу в третьей размерности массива с помощью следующего оператора присваивания

A(:,:, 2) = [1 0 4; 3 5 6; 9 8 7]
A(:,:, 1) =

     
     
     

A(:,:, 2) =

     
     
     

Сформирован массив А размерности 3 и размера 3х3х2.

Можно продолжить добавлять строки, столбцы и страницы с целью формирования многомерных массивов различных размерностей и размеров.

Для изменения размерности многомерного массива нужно:

  • уменьшить или увеличить соответствующий индекс;
  • присвоить одному или нескольким ранее не существовавшим элементам некоторые значения; в этом случае для числовых массивов произойдет увеличение количества строк, столбцов или страниц, поскольку структура числового массива требует одинакового количества строк, одинакового количества столбцов, одинакового количества страниц в соответствующих размерностях.

Реализованный в системе MATLAB механизм присваивания скаляра массиву вместе с механизмом индексации позволяет заполнять целые страницы массива, используя одно число.

Пример.

A(:,:, 3) = 5

 
A(:,:,3)=
     
     
     

 

 

 

 

 
A(:,:,2)=
     
     
     

 

 

 

 

 
A(:,:,1)=
     
     
     

 

 

 

Рис. 5.4. 3-мерный массив размера 3х3х3.

Дополним массив А четвертой размерностью, введя

A(:,:, 1, 2) = [1 2 3; 4 5 6; 7 8 9];
A(:,:, 2, 2) = [9 8 7; 6 5 4; 3 2 1];
A(:,:, 3, 2) = [1 0 1; 1 1 0; 0 1 1]

 
A(:,:,3,1)=
     
     
     

 

 

 
A(:,:,3,2)=
     
     
     

 

 

 

 
A(:,:,2,1)=
     
     
     

 

 

 
A(:,:,2,2)=
     
     
     

 

 

 

 
A(:,:,1,1)=
     
     
     

 

 

 
A(:,:,3,1)=
     
     
     

 

 

Рис. 5.5. 4-мерный массив размера 3х3х3х2.

Использование встроенных функций. Такие встроенные функции системы MATLAB, как randn, ones и zeros, могут быть использованы для формирования многомерных массивов, поскольку каждый аргумент такой функции определяет размер соответствующего измерения.

Пример.

Сформировать 3-мерный массив нормально распределенных случайных чисел размера 4х3х2:

B = randn(4, 3, 2)
B(:,:, 1) =

-0.4326 -1.1465 0.3273
-1.6656 1.1909 0.1746
0.1253 1.1892 -0.1867
0.2877 -0.0376 0.7258

B(:,:, 2) =

-0.5883 1.0668 0.2944
2.1832 0.0593 -1.3362
-0.1364 -0.0956 0.7143
0.1139 -0.8323 1.6236

Чтобы сформировать массив, заполненный константой, удобно применить функцию repmat. Эта функция использует заданный массив (в случае константы - размера 1х1) для формирования многомерного массива в соответствии с его размерностью:

B = repmat(5, [3 4 2])
B(:,:, 1) =

       
       
       

B(:,:, 2) =

       
       
       

Замечание:

Если хотя бы одна из размерностей массива имеет значение 0, то это означает, что многомерный массив - пустой.

Использование функции cat. Применение функции cat существенно упрощает формирование многомерных массивов, поскольку позволяет задать размещение 2-мерных массивов вдоль указанной размерности, используя следующий синтаксис:

B = cat(dim, A1, A2...),
где dim - номер размерности, вдоль которой размещаются массивы.
A1, A2, ….. - список 2-мерных массивов;

Пример.

Сформируем 3-мерный массив, который объединяет два 2-мерных массива размера 2х2:

B = cat(3, [2 8; 0 5], [1 3; 7 9])
B(:,:, 1) =

   
   

B(:,:, 2) =

   
   

Функция cat допускает использование любых комбинаций существующих и вновь вводимых данных.

Пример.

Сформировать 4-мерный массив D с помощью следующей последовательности операторов cat:

A = cat(3, [9 2; 6 5], [7 1; 8 4]);
B = cat(3, [3 5; 0 1], [5 6; 2 1]);
D = cat(4, A, B, cat(3, [1 2; 3 4], [4 3; 2 1]))

 
D(:,:,2,1)=
   
   

 

 

 
D(:,:,2,2)=
   
   

 

 

 
D(:,:,2,3)=
   
   

 

 

 

D(:,:,1,1)=
   
   

 

 

 
D(:,:,1,2)=
   
   

 

 

 
D(:,:,1,3)=
   
   

 

 

Рис. 5.6. 4-мерный массив размера 2х2х2х3.

Функция cat автоматически добавляет промежуточные индексы, равные 1, если в этом возникает необходимость.

Пример.

Сформировать 4-мерный массив, разместив вдоль четвертой размерности два массива размера 2х2:

C = cat(4, [1 2; 4 5], [7 8; 3 2])

 
C(:,:,1,1)=
   
   

 

 

 
C(:,:,1,2)=
   
   

 

 

Рис. 5.7. 4-мерный массив размера 2х2х1х2.

Сформированный 4-мерный массив имеет размер 2х2х1х2.

Если бы аргумент dim был равен 5, то был бы сформирован 5-мерный массив размера 2х2х1х1х2. С учетом принятых допущений его можно было бы изобразить следующим образом

 
C(:,:,1,1,2)=
   
   

 

 

 

----------------------------------------------------------

 
A(:,:,1,1,1)=
   
   

 

 

 

Рис. 5.8. 5-мерный массив размера 2х2х1х1х2.

Характеристики многомерного массива. Для получения информации о характеристиках многомерного массива используются следующие функции:

  • whos - информация о типе массива и используемой памяти;
  • ndims - количество размерностей;
  • size - размер массива.
Извлекаемая информация Функция Пример
Имя, размер, количество байтов используемой памяти, тип массива whos
Name Size Bytes Class
A 2x2x2   double array
B 2x2x2   double array
C 4-D   double array
D 4-D   double array
Grand total is 48 elements using 384 bytes

 

Количество размерностей ndims ndims(D) ans = 4
Размер массива size size(D) ans = 2 2 2 3

 





Поделиться с друзьями:


Дата добавления: 2017-03-12; Мы поможем в написании ваших работ!; просмотров: 425 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Своим успехом я обязана тому, что никогда не оправдывалась и не принимала оправданий от других. © Флоренс Найтингейл
==> читать все изречения...

2378 - | 2186 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.