Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LEKTsIYa-3.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
200.19 Кб
Скачать

3.3.1. Применение операций отношения и логических операций к массивам.

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

Одномерные массивы

>> t=~[-2]

t =

0

>> if (-2), u=cos(pi/4), end

u =

0.7071

>> if (0), u=cos(pi/4), end

>> a=[0 5 9 -1]

a =

0 5 9 -1

>> b=[4 -2 5 10]

b =

4 -2 5 10

>> t=~a

t =

1 0 0 0

>> t=~b

t =

0 0 0 0

>> t=a>=b

t =

0 1 1 0

>> t=any(a)

t =

1

>> t=all(a)

t =

0

>> t=any(b)

t =

1

>> t=all(b)

t =

1

>>

Двумерные массивы

>> A=[1 1 1; 2 2 2; 4 4 4]

A =

1 1 1

2 2 2

4 4 4

>> B=[0 0 0; 9 9 9; 2 3 4]

B =

0 0 0

9 9 9

2 3 4

>> A<=B

ans =

0 0 0

1 1 1

0 0 1

Анализ результата операции показывает, что каждый нуль означает «ложь» для данной позиции внутри матриц, а единица – «истину». Эта матрица показывает (своими единичными элементами), на каких позициях элементы матрицы A не превосходят соответствующие элементы матрицы B.

Следует отметить еще пару логических функций – all и any. Функция all в случае векторов возвращает единицу («истину»), если все элементы вектора не равны нулю («истинны») и возвращает нуль, если хотя бы один элемент вектора нулевой. Функция any действует противоположным образом. В случае же матриц обе эти функции работают с их столбцами, возвращая для каждого столбца результат по описанной схеме, например:

>> A=[1 1 1; 2 2 2; 4 4 4]

A =

1 1 1

2 2 2

4 4 4

>> B=[0 0 0; 9 9 9; 2 3 4]

B =

0 0 0

9 9 9

2 3 4

>> all(A)

ans =

1 1 1

>> all(B)

ans =

0 0 0

>> any(A)

ans =

1 1 1

>> any(B)

ans =

1 1 1

В том особом случае, когда один из операндов скаляр, производится его предварительно расширение до массива того же размера, смысл которого уже пояснялся в таблице 3.1 (иными словами, скаляр сравнивается с каждым из элементов массива-операнда, а результатом является массив из нулей и единиц того же размера, что и массив-операнд; принцип заполнения массива-результата следующий: если результат сравнения скалярного операнда и элемента массива-операнда истинен, в соответствующем месте массива-результата стоит единица, а в противном случае – нуль). Так, например, будем иметь (в режиме командной строки):

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

A =

1 2 3

4 5 6

7 8 9

>> x=5

x =

5

>> A<=x

ans =

1 1 1

1 1 0

0 0 0

Работа логической функции «Исключающее «или» в случае, если операндами являются вещественные скаляры. Функция xor работает также и с массивами одинаковых размеров, поэлементно реализуя операцию «Исключающее ИЛИ». Напомним, что каждый элемент трактуется как истинный, если он не равен нулю и как ложный в случае его равенства нулю. Продемонстрируем результат работы функции xor над некоторыми заданными матрицами A и B, рассмотренными в предпоследнем примере:

>> A=[1 1 1; 2 2 2; 4 4 4]

A =

1 1 1

2 2 2

4 4 4

>> B=[0 0 0; 9 9 9; 2 3 4]

B =

0 0 0

9 9 9

2 3 4

>> xor(A,B)

ans =

1 1 1

0 0 0

0 0 0

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]