Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основные понятия среды MATLAB.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.79 Mб
Скачать

2.5. Массивы

2.5.1 Задание массивов

Массивы – это сложный тип данных, объединяющий под одним именем совокупность однотипных элементов. В среде MATLAB можно работать с массивами различной размерности. Как уже было отмечено ранее, любая переменная автоматически определяется как матрица, потому специальных ключевых слов для описания массивов не предусмотрено. Для того, что бы среда определила данное как массив, его значения заключаются в квадратные скобки: [ ]. Значения вектора разделяются пробелами или запятыми.

Синтаксис.

имя _переменной = [список_значений] – задание массива. Значения в списке разделяются пробелом. Для задания матриц, строки разделяются символом “ ; ”.

Примеры. Задание векторов.

  1. >> a=[1 2 3 4]; – задание вектора-строки а, состоящего из четырех значений: 1, 2, 3, 4.

  2. >> a=[a 5]; – добавление к вектору а еще одного элемента – 5.

  3. >> A=['Name' 'Age'] – формирование вектора символьных значений.

Примеры. Задание матриц.

  1. >> B=[1 2 3; 4 5 6]; – ввод данных для матрицы 2х3.

  2. >> A=[1 2 3;4 5 6;7 8 9]; – ввод данных для матрицы 3х3.

  3. >> А=[1; 4; 7] – выделение первого столбца матрицы А.

  4. >> А1=[1 2 3;4 5 6;7 8 9];

>> A2=[10;11;12];

>> A3=[14 15;16 17;18 19];

>> A=[A1,A2,A3] создание массива слиянием других массивов

Результат выполнения:

A=

1

2

3

10

14

15

4

5

6

11

16

17

7

8

9

12

18

19

В различных задачах часто возникает необходимость создания сложного массива путем объединения уже существующих, причем объединение может осуществляться различными способами. Объединить массивы можно с помощью команды cat – конкатенация.

Синтаксис:

C = cat(dim, A1, A2, A3, A4, ...), – объединение массивов A1, A2,…в результирующий массив C, где параметр dim определяет правило объединения. Параметр dim принимает целочисленные значения. Использование различных значений параметра dim приведено в примерах ниже.

Пример. Объединение двух векторов B и C.

>> B=[1 2 3]; C=[4 5 6]; % задание двух векторов

>> A=cat(1,B,C) % последовательное присоединение значений по направлению вниз

A = 1 2 3

4 5 6

>> A=cat(2,B,C) % последовательное присоединение значений по направлению вправо

Результат выполнения:

A = 1 2 3 4 5 6

Пример. Объединение двух матриц B и C.

>> B=[1 2;3 4];

>> C=[5 6;7 8];

>> A=cat(1,B,C)

Результат выполнения:

A = 1 2

3 4

5 6

7 8

>> A=cat(2,B,C)

Результат выполнения:

A = 1 2 5 6

3 4 7 8

>> A=cat(3,B,C) % марица А представляет собой 3-х мерную структуру.

Результат выполнения:

A(:,:,1) = 1 2

3 4

A(:,:,2) = 5 6

7 8

Задание значений массива в случае большой размерности, например, вектора из 100 элементов или матрицы размерности 50х50, перечислением элементов является сложным. В таких случаях используют специальные функции, позволяющие создавать массивы из простых элементов (таблица 1.6). Параметрами функций являются размерности массива.

Таблица 1.6. Функции формирования массивов

Функция

Назначение

zeros()

формирование массива нулей

ones()

формирование массива единиц

eye()

формирование единичной матрицы

rand()

формирование массива элементов, распределенных по равномерному закону

randn()

формирование массива элементов, распределенных по нормальному закону

cross()

векторное произведение

kron()

формирование тензорного произведения

linspace()

формирование линейного массива равноотстоящих узлов

logspace()

формирование узлов логарифмичесокй сетки

meshgrid()

формирование узлов двумерной и трехмерной сеток

:

формирование векторов и подматриц (задание диапазона)

Примеры.

  1. a1 = zeros(1, 100); – создается вектор-строка, 100 элементов с нулевыми значениями.

  2. a2 = zeros(100, 1); – создается вектор-столбец, 100 элементов с нулевыми значениями.

  3. a3 = ones(1, 1000); – создается вектор-строка, 1000 элементов с единичными значениями.

  4. a4 = ones(1000, 1); – создается вектор-столбец, 1000 элементов с единичными значениями.

  5. a5 = rand(1000, 1); – создается вектор-столбец, 1000 элементов со случайными значениями.

В некоторых задачах используются специальные матрицы, функции, формирования которых приведены в таблице 1.7. Более детально специальные матрицы описаны в приложении 3.

Таблица 1.7. Функции формирования матриц специального вида

Функция

Назначение

compan()

матрица характеристического многочлена

hadamard()

матрица Адамара (Hadamard matrix)

hankel()

матрица Ганкеля (Hankel matrix)

hilb(), invhilb()

матрица Гильберта (Hilbert matrix)

magic()

магический квадрат

pascal()

матрица Паскаля (Pascal matrix)

rosser()

матрица Рессера (Rosser matrix)

toeplitz()

матрица Теплица (Toeplitz matrix)

vander()

матрица Вандермонда (Vandermonde matrix)

wilkinson()

матрица Уилкинсона (Wilkinson matrix)

Также в среде MATLAB можно задавать и обрабатывать массивы сложной структуры. Так цветные изображения (RGB) представляются сложными массивами, имеющими три индекса, например, Iso(n,m,k), где k – номер матрицы, представляющей основной цвет; n, m – соответственно номер строки и столбца в каждой из матриц. Так как среда MATLAB позволяет получать данные из различных внешних аппаратных устройств, то существует необходимость в существовании возможности определения структуры и типа лданных.

Определить структуру массива можно с помощью команды whos.

Синтаксис.

whos список переменных. Если список пуст, то определяются все переменные текущей рабочей области.

Пример. Задание вектора a, состоящего из трех элементов и матрицы b размерности 2х2 и определение их структуры командой whos.

>> a=[1 2 3];

>> b=[1 2;3 4];

>> whos

Name Size Bytes Class Attributes

a 1x3 24 double

b 2x2 32 double