Динамическое изменение размера матрицы
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Матрицы могут динамически изменять свой размер в процессе выполнения про­граммы с помощью функций matrix и resize_matrix. Это позволяет адаптировать размер уже созданной матрицы к тем данным, которые ей предстоит хранить (рис. 1.3.2-7).

 

--> // Динамическое изменение размеров матриц

-->

--> А = [1 2 3; 4 5 6] // Исходная матрица

 А =

1. 2. 3.

4. 5. 6.

--> А(3, 1) = 7 // Изменение размера матрицы путем дополнения элемента

 А =

1. 2. 3.

4. 5. 6.

7. 0. 0.

-->

--> А(:, 3) = [] // Удаление 3-го столбца

 А =

1. 2.

4. 5.

7. 0.

-->

-->// Создание вектора заданного размера из матрицы А

--> В = matrix(А, 1, 6)

 В =

1. 4. 7. 2. 5. 0.

-->

--> // Создание матрицы (3х4) по экспоненциальному закону распределения

--> M = grand(3, 4, 'exp', 5) // с математическим ожиданием 5

 M =

3.1472369 0.7660456 0.472206 0.4688152

7.350552 4.6290769 4.0357003 3.3184658

0.4401028 13.20044 9.4667509 0.5462453

-->

--> M1 = resize_matrix(M, 2, 2)// Изменение размера матрицы М(3х4) на М1(2х2)

 M1 =

3.1472369 0.7660456

7.350552 4.6290769

 

Рис. 1.3.2-7 Примеры динамического изменения размеров матриц

 

На рис. 1.3.2-7 создана матрица А(2,3). Далее в эту матрицу добавлен элемент с индексами (3,1). Добавление элемента вызывает в мат­рице А создание третьей строки, где первому элементу в ней будет присвоено значение 7, а значения остальных элементов данной строки будут установлены в 0. Таким образом, размер матрицы может увеличиваться динамически.

 Далее приведен пример динамического уменьшения размера матрицы, где для удаления третьего столбца матрицы А, используется обозначение пустой матрицы [].

Полностью изменить размер матрицы можно с использованием функции matrix. Эта функция трансформирует исходную матрицу в матрицу другого размера, копируя элементы столбец за столбцом. В следующем примере матрица А раз­мером 3х2=6 преобразуется в вектор-строку с 6 элементами.

В последнем примере (рис. 1.3.2-7) с использованием функцииgrand создана матрица М размером (3х4), элементы которой распределены по экспоненциальному закону распределения с математическим ожиданием 5. Размер матрицы изменен с использованием функции resize_matrix. Таким образом матрица М(3х4) стала матрицей М1(2х2).

Функция size позволяет проверить размер матрицы и возвращает два параметра n и m, значения которых равны, соответственно, числу строк и столбцов в данной матрице (рис. 1.3.2-8).

 

--> // Динамическое изменение размеров матриц

-->

--> А = [1 2 3; 4 5 6] // Исходная матрица

 А =

1. 2. 3.

4. 5. 6.

--> А(3, 1) = 7 // Изменение размера матрицы путем дополнения элемента

 А =

1. 2. 3.

4. 5. 6.

7. 0. 0.

-->

--> А(:, 3) = [] // Удаление 3-го столбца

 А =

1. 2.

4. 5.

7. 0.

-->

-->// Создание вектора заданного размера из матрицы А

--> В = matrix(А, 1, 6)

 В =

1. 4. 7. 2. 5. 0.

-->

--> // Создание матрицы (3х4) по экспоненциальному закону распределения

--> M = grand(3, 4, 'exp', 5) // с математическим ожиданием 5

 M =

3.1472369 0.7660456 0.472206 0.4688152

7.350552 4.6290769 4.0357003 3.3184658

0.4401028 13.20044 9.4667509 0.5462453

-->

--> M1 = resize_matrix(M, 2, 2)// Изменение размера матрицы М(3х4) на М1(2х2)

 M1 =

3.1472369 0.7660456

7.350552 4.6290769

 

Рис. 1.3.2-7 Примеры динамического изменения размеров матриц

--> // Динамическое изменение размеров матриц

-->

--> А = [1 2 3; 4 5 6] // Исходная матрица

 А =

1. 2. 3.

4. 5. 6.

--> А(3, 1) = 7 // Изменение размера матрицы путем дополнения элемента

 А =

1. 2. 3.

4. 5. 6.

7. 0. 0.

-->

--> А(:, 3) = [] // Удаление 3-го столбца

 А =

1. 2.

4. 5.

7. 0.

-->

-->// Создание вектора заданного размера из матрицы А

--> В = matrix(А, 1, 6)

 В =

1. 4. 7. 2. 5. 0.

-->

--> // Создание матрицы (3х4) по экспоненциальному закону распределения

--> M = grand(3, 4, 'exp', 5) // с математическим ожиданием 5

 M =

3.1472369 0.7660456 0.472206 0.4688152

7.350552 4.6290769 4.0357003 3.3184658

0.4401028 13.20044 9.4667509 0.5462453

-->

--> M1 = resize_matrix(M, 2, 2)// Изменение размера матрицы М(3х4) на М1(2х2)

 M1 =

3.1472369 0.7660456

7.350552 4.6290769

 

Рис. 1.3.2-7 Примеры динамического изменения размеров матриц

 

Кроме формата size(А), функция size может имеет и другой формат:

 

nm=size(А,1),

nm=size(А,2),

nm=size(А,"*").

 

Возвращаемое значение в этом случае определяется вторым параметром функции:

· при l возвращается число строк;

· при 2  возвращается число столбцов;

· при "*" возвращается общее число элементов в матрице, равное

числу строк, умноженному на число столбцов.

 

 

Создание массивов ячеек

Создать массив ячеек можно с помощью операции фигурные скобки – {} или функции cell.

При наличии данных для ввода в массив ячеек, можно создать массив, используя операцию конструирования массива ячеек {} (рис. 1.3.2-8).

 

-->// Создание массива ячеек

-->

-->// Пример1

-->myCell = {1,2,3; 'текст', rand(5,10), {11; 22; 33}}

myCell =

[1x1 constant] [ 1x1 constant] [1x1 constant]

 [1x1 string ] [5x10 constant] [3x1 cell ]

-->

-->// Пример 2

--> C = {}

 C =

{}

-->

-->// Пример 3

-->emptyC = cell(3, 4)

 emptyC =

 [0x0 constant] [0x0 constant] [0x0 constant] [0x0 constant]

 [0x0 constant] [0x0 constant] [0x0 constant] [0x0 constant]

 [0x0 constant] [0x0 constant] [0x0 constant][0x0 constant]

 

Рис. 1.3.2-8. Создание массива ячеек с использованием {} и функции cell

 

Как и все массивы Scilab, массивы ячеек – прямоугольные, с одинаковым количеством ячеек в каждой строке. Матрица myCell (Пример1) представляет собой массив ячеек размером 2×3.

Операцию конструирования ячеек можно использовать для создания пустого массива ячеек {} Пример2.

Чтобы добавить значения в массив ячеек, вначале нужно создать пустой массив. Для этого в Примере3 используется функция cell(3х4). В результате чего массивemptyC представляет собой массив ячеек размером 3×4, где каждая ячейка содержит пустой массив [] Пример3.

 

 

1.3.3. Индексирование и векторизация

Дата: 2019-11-01, просмотров: 338.