Обращение к элементу матрицы

Обращение к элементу матрицы производится по правилу – в круглых скобках после имени матрицы даются индексы, которые должны быть положительными целыми числами. Например, X(2,1) означает элемент из второй строки первого столбца матрицы X. Для дальнейших примеров, введем сигнальную матрицу 4x4:

>> X = [ 1 4e-6 2 0.5;

0.1 0.22 0.63 0.707;

0.33 1 2 4;

1 1 1 2]

>> X(2,1)

ans =

0.1000

Если в качестве индекса задать комплексное число с дробной вещественной частью, то MATLAB выведет ошибку,

>> X(3/2+4i)

??? Subscript indices must either be real positive integers or logicals.

Данный пример показывает, что числа хранятся по столбцам и при обращении к данному двумерному массиву элемент X(2) есть то же самое, что и X(2,1). Чтобы изменить элемент матрицы, ему нужно присвоить новое значение:

>> X(2,5) = sin (1) % Пятый элемент второй строки

X =

1.0000 0.0000 2.0000 0.5000 0

0.1000 0.2200 0.6300 0.8415 0.8415

0.3300 1.0000 2.0000 4.0000 0

1.0000 1.0000 1.0000 2.0000 0

Заметим, что изначально матрица X состояла из четырех строк и столбцов. Расширение матрицы (добавление пятого элемента во вторую строку) не потребовало никаких дополнительных действий, при этом пятый элемент в первой, третей и четвертой строках был обнулен автоматически.

Размер матрицы можно уточнить по команде size, а результат команды size можно использовать для организации новой матрицы. Например, нулевая матрица того же порядка, что и матрица X, будет сформирована по команде:

>> X2 = zeros (size(X))

X2 =

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

Для преобразования матрицы в матрицу с другим числом строк и столбцов служит команда reshape:

X3 = reshape (X,5,4)

X3 =

1.0000 0.2200 2.0000 2.0000

0.1000 1.0000 1.0000 0

0.3300 1.0000 0.5000 0.8415

1.0000 2.0000 0.7070 0

0.0000 0.6300 4.0000 0

С помощью двоеточия легко выделить часть матрицы. Например, вектор из первых двух элементов третьего столбца матрицы X задаётся выражением:

>> X(1:2,3)

ans =

2.0000

0.6300

Двоеточие само по себе означает строку или столбец целиком. Работа с индексами в MATLAB очень удобна. Например, чтобы выделить несколько столбцов массива, достаточно организовать вектор из номеров столбцов. Это можно сделать явным перечислением, а можно указать нужный диапазон. Для выделения матрицы, составленной из нечетных столбцов матрицы X, используем команду:

>> X(:,1:2:3)

ans =

1.0000 2.0000

0.1000 0.6300

0.3300 2.0000

1.0000 1.0000

Здесь конструкция 1:2:3 означает изменение второго индекса от единицы до трех с шагом два. Двоеточие применяется также для замещения элементов матрицы. Следующая команда позволяет переставить первую и вторую строки матрицы X:

>> X([1,2],:)=X([2,1],:)

X =

0.1000 0.2200 0.6300 0.7070 0.8415

1.0000 0.0000 2.0000 0.5000 0

0.3300 1.0000 2.0000 4.0000 0

1.0000 1.0000 1.0000 2.0000 0

Здесь в качестве индекса выступают векторы [1,2] и [2,1]. Для удаления элемента вектора достаточно присвоить ему пустой массив – пару квадратных скобок [ ]. Чтобы вычеркнуть одну или несколько строк (столбцов) матрицы нужно указать диапазон удаляемых строк (столбцов) для одной размерности и поставить двоеточие для другой размерности. Например, для удаления двух последних столбцов матрицы X достаточно ввести команду:

>> X(:,2:end)=[ ]

X =

0.1000

1.0000

0.3300

1.0000

Обратим внимание, что вместо числового значения индекса указано зарезервированное имя end – максимальное значение индекса. В списке аргументов size второй параметр позволяет определить соответствующую размерность матрицы, например, найти число столбцов матрицы. Для нахождения длины вектора можно воспользоваться также командой length. Число стол­бцов матрицы X2 равно 4, не зависимо от того, каким способом пользоваться:

>> [size(X2,2),length(A2(1,:))]

ans = 4 4

Вместо двоеточия можно использовать функцию-синоним colon.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: