8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 28 29 30 31 32 33 34 ... 365

Начните набирать в командной строке

» В = [4 3-1 2 7 0 -5 1 2]

Нажмите клавишу <Enter>. Обратите внимание, что MATLAB ничего не вычислила. Курсор мигает на следующей строке без символа ». Продолжите ввод матрицы построчно, нажимая в конце каждой строки <Enter>. Последнюю строку завершите закрывающей квадратной скобкой, получается:

4 3 -1 2 7 0 -5 12

Еще один способ ввода матриц состоит в том, что мгтгрицу можно трактовать как вектор-строку, каждый элемент которой является вектор-столбцом. Например, матрицу два натри

С =

(3 4

1

7 О

)

можно ввести при помощи команды:

» С = [[3; 4) [-1; 2] [7; 0] ]

С = 3-17 4 2 0

Посмотрите переменные рабочей среды в окне Workspace или наберите в командной строке whos. Итак, в рабочей среде содержится три матрицы, две прямоугольные и одна квадратная.

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

Доступ к элементам матриц осуществляется при помощи двух индексов — номеров строки и столбца, заключенных в круглые скобки, например

» С(2, 3) ans = О


Элементы матриц могут входить в состав выражений:

» с(1, 1) + с{2, 2) + с(2, 3) ans -5

В качестве индексов могут выступать векторы, содержащие номера нужных строк и столбцов. Например, для выделения элементов первой и второй строк второго и третьего столбцов введенной выше матрицы В достаточно ввести команды:

» i = [1 2]; » j = [2 3]; » bl = b{i, j) bl =

3 -1

7 0

Расположение элементов матрицы в памяти компьютера определяет еще один способ обращения к ним. MATLAB хранит элементы матрицы в памяти по столбцам. Элементы qtj матрицы Q размера m на п содержатся в

памяти в последовательности:

<7ц> <721> <7/и1 <?12 <?22 — > clm2i •- alif a2n —• Qmn •

Следовательно, для доступа к элементам матрицы можно использовать один индекс, задающий порядковый номер элемента матрицы в векторе. Например, тлементы матрицы С, определенной в предыдущем разделе, записаны в таком порядке

с(1, 1), с(2, 1), с(1, 2), с(2, 2), с(1, 3), с(2, 3)

Поэтому обращение к элементам матрицы как к элементам вектора при помощи одного индекса (индексация при помощи порядкового номера) приводит к предсказуемому результату

» с<5) ans -7

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

Еще одним способом обращения сразу ко всем элементам матрицы, удовлетворяющим некоторому условию, является логическое индексирование. Логи-


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

Логическое индексирование

Логическое индексирование (logical subscripting) позволяет выбрать из массива элементы, удовлетворяющие определенным условиям, которые заданы логическим выражением. Подробно логические выражения будут обсуждаться в главе 7, а здесь приведем простой пример. Пусть из введенной выше матрицы В требуется выбрать все отрицательные элементы и записать их в вектор /. Сначала выполним, казалось бы, недопустимое действие: запишем в переменную ind результат сравнения матрицы и числа ноль.

» ind = В < О ind =

D 0 1

ООО

10 0

Образовался логический массив (logical array) ind того же размера, что и в (см. окно Workspace), состоящий из нулей и единиц, причем единицы соответствуют отрицательным элементам массива в. Указание логического массива ind в качестве единственного индекса исходного массива в позволяет решить поставленную задачу:

» f = В(ind) Е =

-5

-1

Разумеется, можно было обойтись и без вспомогательного массива ind, написав сразу f = в (в < 0).

Если требуется присвоить новое значение элементам массива, удовлетворяющим определенному условию, то выражение в(в < 0) должно войти в левую часть оператора присваивания.

Только что мы рассмотрели новый тип данных MATLAB — логические массивы. В нашем примере логический массив ind был автоматически создан при выполнении операции сравнения в > о. Было бы ошибкой считать,



0 ... 28 29 30 31 32 33 34 ... 365