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

2.5.2 Доступ к элементам массивов

Для доступа к элементам массива используются круглые скобки – (номер элемента).

Синтаксис.

name(n) – выделяет элемент вектора с;

name(n,m) – выделяет элемент матрицы,

где name – имя массива, n, m – номер элемента (в матрице: n – номер, строки m – номер столбца).

Также возможны операции выделения указанной части матрицы с использованием символа “:”. Чтобы вырезать часть матрицы М, можно использовать последовательное выполнение следующих команд:

>> A = M(n:k,:); % вырезание по строкам

>> A=A(:,m:l); % вырезание по столбцам

где n - нижняя граница строк; k - верхняя граница строк;

m – нижняя граница столбцов; l – верхняя граница столбцов.

Примеры.

  1. a(1) – выделение первого элемента вектора a;

  2. b(2,1) – выделение элемента матрицы b, стоящего во второй строке первого столбца.

3. >> A=[ 1 2 3;4 5 6;7 8 9]; % задание матрицы А

B1 = A(:,1);   % B1 = [1; 4; 7]; – выделение первого столбца;

B2 = A(2,:);   % B2 = [1 2 3] – выделение первой строки

B3 = A(1:2,2:3);    % B3 = [2 3; 5 6] – выделение первых двух строк и 2-го и 3-го столбцов матрицы А.

Переписать матрицу в единый вектор-столбец можно следующим образом: V=A(:).

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

>>V=b(:)

V = 1

3

2

4

Для удаления отдельных столбцов и строк матрицы используются пустые квадратные скобки [ ].

5. Зададим матрицу А.

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

А=

1

2

3

4

5

6

7

8

9

    1. Удалим второй столбец используя оператор : (двоеточие):

>> А(:.2)=[ ]

А = 1    3

4    6

7    9

5.2 Используя оператор: (двоеточие), удалим вторую строку:

>> А(2,:)=[ ]

А = 1    3

7    9

2.5.3 Функции обработки массивов

Для работы с массивами предусмотрены специальные функции, которые позволяют быстро определять их размерность и выполнять преобразования (таблица 1.8).

Таблица 1.8. Функции преобразования массивов

length(A)

возвращает одно значение – количество элементов массива

size(A)

возвращает два числа – размерность матрицы

fliplr(A)

переставляет столбцы матрицы в обратном порядке (первый становится последним и т. д.)

flipud(A)

переставляет строки матрицы в обратном порядке (первая становится последней и т. д.)

rot90(A)

вращает матрицу на 90° против часовой стрелки

reshape(A,n,m)

образует матрицу размерности nхm путем считывания матрицы А по столбцам с последующим их размещением по n строкам с m столбцами

tril(A)

образует матрицу, состоящую из нижней треугольной части матрицы А

triu(A)

образует матрицу, состоящую из верхней треугольной части матрицы А

Продолжение таблицы 1.8

Функция

Назначение

diag(x[,n])

формирует диагональную матрицу или извлекает диагональ. Если x – вектор, то формируется квадратная матрица с главной диагональю x. Для перестановки диагонали на задается необязательный параметр n – номер диагонали, при этом отсчет ведется от главной диагонали (главная диагональ имеет номер 1). Если x – матрица, то создается вектор столбец из элементов главной диагонали. Если задать параметр n, то формируется вектор из заданной диагонали.

A'

символ " ' " (апостроф) определяет операцию транспонирования матрицы А или вектора

inv(A)

возвращает матрицу, обратную квадратной матрице А

Примеры.

  1. >> a = 5; A = [1 2 3];B = [1 2 3; 4 5 6];

>> size(a), size(A), size(B) % определение размера вектора a, матриц A, B

ans = 1 1

ans = 1 3

ans = 2 3

  1. >> A=[1 2;3 4]; % задание матрицы 2х2

>> N = length(A); % определение числа элементов массива а.

N = 4

3.

A

1

2

% вывод исходной матрицы А

3

4

>> fliplr(A) % перестановка столбцов

ans = 2 1

    1. 3

4.

>>A'

ans =

1

3

% вывод транспонированной матрицы А

2

4

  1. >> triu(A) % выделение верхней треугольной матрицы

ans = 1 2

    1. 4

>> tril(A) % выделение нижней треугольной матрицы

ans = 1 0

3 4

  1. >> inv(A) % вычисление обратной матрицы

ans = -2.0000 1.0000

1.5000 -0.5000

  1. >> B = [1 2 3; 4 5 6]; % задание матрицы В

>> flipud(B) % перестановка строк

ans = 4 5 6

1 2 3

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

>> rot90(A) % поворот матрицы на 90º против часовой стрелки

ans = 3 6 9

2 5 8

1 4 7

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

>> reshape(A,1,9) % формирование из элементов матрицы А вектора

ans = 1 4 7 2 5 8 3 6 9

  1. >> diag(A,-1) % формирование вектора-столбца из элементов,

лежащих под главной диагональю

ans = 4

8

Для определения характеристик массивов (например, нормы, определителя) используются специальные алгоритмы, которые реализованы в среде MATLAB и представлены специальными функциями, которые приведены в таблице 1.9. 

Таблица 1.9. Функции определения характеристик массивов

Функция

Назначение

norm(A,n)

возвращает норму матрицы А, n – тип нормы:

n=1 – max значение суммы абсолютных значений элементов по столбцам; n=2 – максимальное сингулярное число А; n=inf – max значение суммы абсолютных значений элементов матрицы по строкам;n='fro' – норма Фробениуса: norm(A, 'fro') = sqrt(sum(diag(A'A))). По умолчанию вычисляется норма 2.

cond(X[,p])

возвращает число обусловленности матрицы, необязательный параметр p определяет тип нормы:

не задан или р=2 – вторая норма (отношении самого большого сингулярного числа X к самому малому).

р=1 – первая норма; p= 'fro' – норме Фробениуса;

р='inf' – норма неопределенности. Если cond(X), близко к 1, то матрица хорошо обусловлена.

det(X)

возвращает определитель квадратной матрицы X. Если X целые значения, то результат – тоже целое число. Использование det(X)=0 как теста на вырожденность действительно только для матрицы малого порядка с целыми элементами.

rank(А,[ tol])

возвращает ранг матрицы или количество сингулярных чисел, которые превышают заданный порог tol

orth(A)

возвращает ортонормированный базис матрицы А

Продолжение таблицы 1.9

Функция

Назначение

[D,B] = balance(A)

В=balance(A)

возвращает диагональную матрицу D с элементами являющимеся степенями основания 2, и масштабированную матрицу В, что B=D\A*D, а норма каждого ряда масштабированной матрицы приближается к норме столбца с тем же номером;

возвращает масштабированную матрицу В

eig(A)

возвращает вектор собственных значений квадратной полной или симметрической разреженной матрицы А обычно после автоматического масштабирования

min(x)

если х – вектор, то возвращает минимальный элемент вектора. Если х – матрица, то возвращает вектор, состоящий из минимальных элементов столбцов матрицы

max(x)

если х – вектор, то возвращает максимальный элемент вектора. Если х – матрица, то возвращает вектор, из максимальных элементов столбцов матрицы

sum(А)

возвращает вектор, состоящий из сумм элементов матрицы по столбцам

Примеры.

  1. >> A=[1 2 3;4 5 6;7 8 9]; % определение матрицы

>> sum (А) % сумма по столбцам

ans = 12 15 18

>> sum(A') %сума по строкам

ans = 6 15 24

  1. >> sum(diag(A)) % сумма элементов диагонали матрицы А

ans = 15

  1. >> max(A) % формирует вектор максимальных элементов матрицы по столбцам

ans = 7 8 9

  1. max(max(A)) % нахождение максимального элемента матрицы А

ans = 9

Двойное использование функции max заключается в том, что первый раз формируется вектор максимальных элементов по столбцам матрицы A, а вторая команда находит максимальное значение вектора-столбца.

  1. >> eig(A) % вычисление собственных чисел матрицы А

ans = 16.1168

-1.1168

-0.0000

  1. >> [V,D]=eig(A)

V = -0.2320 -0.7858 0.4082 – возвращают компоненты собственного

-0.5253 -0.0868 -0.8165 разложения A=VD/V

-0.8187 0.6123 0.4082

D = 16.1168 0 0 % возвращает вещественную матрицу

0 -1.1168 0 Жордана

0 0 -0.0000

  1. >> rank(A) % определение ранга матрицы А

ans = 2

  1. >> det(A) % вычисление определителя матрицы А

ans = 0

  1. >> B=[1 2 3;4 -1 6;7 3 9];

>> cond(B) % определение меры обусловленности матрицы А

ans = 13.3035

  1. >> norm(B) % вычисление нормы 2 матрицы В

ans = 14.0296

  1. >> norm(B,1) % вычисление нормы 1 матрицы В

ans = 18