Материал: Matlab. Практический подход. Самоучитель

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Самоучитель Matlab

Логические операторы и операторы сравнения

Я всегда завидовал Вашему умению выстраивать точную логическую направленность.

К/ф "Семнадцать мгновений весны"

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

Обычно под логическими значениями подразумевают тип данных, переменные которого могут принимать два значения – истина и ложь (true и false соответственно). В Matlab любое числовое значение, отличное от нуля, интерпретируется как истина (или true), а ненулевые значения интерпретируются как ложь (или false). Фактически, это есть правило перевода числовых значений в логические значения. Обратное преобразование выполняется по следующему правилу: логическое значение истина (или true) преобразуется в числовое значение 1, а логическое значение ложь (или false) преобразуется в числовое значение 0.

На заметку

Если некоторой переменной присвоить в качестве значения true или false, отображаемым будет соответственно значение 1 или 0.

Операндами для операторов сравнения выступают числовые значения. Это бинарные операторы. Если оба операнда – скаляры, сравнение выполняется по правилам сравнения чисел. При истинном соотношении возвращается значение 1, при ложном – значение 0. Если операндами являются матрицы одинаковых рангов, сравниваются соответствующие элементы матриц (по правилам сравнения числовых значений). Результатом является "логическая матрица": ее элементы равны 1 или 0 в зависимости от результата сравнения соответствующих элементов исходных матриц. Если одним операндом является скаляр, а другим – матрица, то выполняется сравнение каждого элемента матрицы со скаляром. Операторы сравнения перечислены в табл. 1.3.

Табл. 1.3. Операторы сравнения Matlab

Оператор

Описание

 

 

==

Оператор проверки на предмет равенства

~=

Оператор проверки значений операндов на предмет неравенства

26

Глава 1. Принципы работы Matlab и основы вычислений

Оператор

Описание

>Оператор проверки того, что значение первого операнда больше значения второго операнда

<Оператор проверки того, что значение первого операнда меньше значения второго операнда

>=

Оператор проверки того, что значение первого операнда не меньше

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

 

 

<=

Оператор проверки того, что значение первого операнда не больше

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

Как и в случае операторов сравнения, операндами логических операторов могут выступать как скаляры, так и матрица (одновременно оба или только один). Если операндами являются скаляры, соответствующие логические операции выполняются по описанным выше правилам преобразования числовых и логических значений. Если оба операнда – матрицы одинаковых размеров, логические операции выполняются поэлементно. При условии, что один операнд – матрица, а второй – скаляр, логическая операция выполняется для каждого элемента матрицы и скаляра. Логические операторы Matlab представлены в табл. 1.4.

Табл. 1.4. Логические операторы Matlab

Оператор

Описание

Логическая операция и. Результатом является истина (значение 1),

&

если оба операнда истинны. В противном случае возвращается 0

Логическая операция или. Результатом является истина (значение 1),

|

если хотя бы один операнд истинен. В противном случае возвращается 0

Логическая операция отрицания. Для истинного операнда возвраща-

~

ется значение 0, а для ложного – значение 1

Еще раз отметим, что как в операциях сравнения, так и в логических операциях для элементов матриц или скаляров (в зависимости от типа операндов) возвращаются значения 0 (ложь) и 1 (истина).

Комплексные числа

Жизнь сложена из банальных обстоятельств, и потому скучна.

К/ф "Клуб самоубийц, или Приключения титулованной особы"

В Matlab можно использовать не только действительные, но и комплексные числа. Ввод комплексных чисел в рабочей области выполняется в соответ-

27

Самоучитель Matlab

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

На заметку

Если быть более точным, то в случае, когда, например, переменной i присвоено числовое значение, использовать эту переменную как мнимую единицу нужно "правильно". Например, командой i=3 создаем "проблему" в виде числового значения переменной i. Если после этого выполнить команду a=i, переменная a получит значение 3. Но если воспользоваться командой a=1i, то результат будет иным – значение переменной a будет комплексным и равно мнимой единице.

Ниже приведены примеры использования комплексных значений (жирным шрифтом выделен ввод пользователя):

>>z=1+2i

z =

1.0000 + 2.0000i

>>z+j

ans =

1.0000 + 3.0000i

>>(2-4i)*(1+z) ans =

12.0000 - 4.0000i

>>i*z

ans =

-2.0000 + 1.0000i

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

Существует ряд функций, облегчающих работу с комплексными числами. Среди них имеет смысл выделить функции real() и imag() для вычисления действительной и мнимой частей комплексного числа соответственно, функцию conj() для вычисления комплексно сопряженного числа, а также функцию complex(), принимающую два аргумента (действительная и мнимая части), на основании которых создается комплексное число. Примеры использования этих функций приведены далее:

>> complex(3,-2) ans =

3.0000 - 2.0000i

28

Глава 1. Принципы работы Matlab и основы вычислений

>>conj(ans) ans =

3.0000 + 2.0000i

>>real(ans)

ans =

3

>> imag(2-4i) ans =

-4

Как и в предыдущих случаях, жирным шрифтом выделены команды, вводимые пользователем.

На заметку

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

Разумеется, комплексными могут быть не только скалярные величины, но и матрицы.

Оператор создания интервала значений

Здесь явно не хватает двух точек.

К/ф "Приключения Шерлока Холмса и доктора Ватсона. Кровавая надпись"

Достаточно популярным и часто используемым в Matlab является оператор "двоеточие", то есть :. Существует несколько вариантов его использования. Рассмотрим самые общие.

Для создания вектора-строки со значениями, равнораспределенными в некотором интервале, оператор используют в следующем формате: нижняя граница диапазона, оператор (то есть :) и верхняя граница диапазона – например, x=a:b. При этом создается вектор-строка (для приведенной команды вектор записывается в переменную x). Первый элемент вектора равен нижней границе указанного диапазона (значение a). Шаг дискретности изменения значений элементов вектора равен единице. Значение последнего элемента определяется верхней границей указанного диапазона (в данном случае b). Так, командой x=1:10 создается вектор-строка со значениями 1, 2, 3 и т.д. до 10 включительно (жирным шрифтом выделен ввод пользователя):

>> x=1:10 x =

1

2

3

4

5

6

7

8

9

10

29

Самоучитель Matlab

Если нужно создать вектор-строку с последовательностью значений и шагом дискретности, отличным от единицы, используют тот же оператор "двоеточие" (то есть :), но в несколько ином формате: указывается нижняя граница диапазона значений, оператор "двоеточие", шаг дискретности, снова оператор "двоеточие", и верхняя граница диапазона – например, y=a:m:b. Формируется вектор-строка с первым значением – нижней границей диапазона (для приведенной команды это a). Каждый следующий элемент получается прибавлением к предыдущему величины, указанной в качестве шага дискретности (в данном случае m). Значения элементов сформированного массива не превышают верхнюю границу диапазона (то есть b). Пример такого использования оператора "двоеточие" приведен ниже (отрывок кода из рабочей области, жирным выделен ввод пользователя):

>> y=1:0.7:10

 

 

 

 

 

 

y =

 

 

 

 

 

 

 

Columns 1 through 8

3.1000

3.8000

4.5000

5.2000

5.9000

1.0000

1.7000

2.4000

Columns 9 through 13

8.7000

9.4000

 

 

 

6.6000

7.3000

8.0000

 

 

 

В данном случае создается вектор-строка y со значениями от 1 до 10 с шагом дискретности 0.7 – значения 1.0, 1.7, 2.4 и т.д. до 9.4 включительно (следующее гипотетическое значение в последовательности 10.1 превышает верхнюю границу диапазона 10, поэтому в формируемый вектор оно не входит).

На заметку

Сообщения Columns 1 through 8 и Columns 9 through 13 появляются автоматически как следствие того, что результат выполнения команды y=1:0.7:10 в одну строку не помещается, поэтому выполняется перенос части вектора-результата в следующую строку. Данные сообщения призваны облегчить процесс индексной идентификации элементов.

Второй способ использования оператора "двоеточие" – при индексировании элементов. Как и в предыдущем случае, существует несколько форматов, или правил, использования оператора "двоеточие" в индексах.

Например, если оператор "двоеточие" используется в формате A(i:j,k), то в качестве результата возвращается вектор-столбец, который формируется из элементов матрицы A, находящихся в k-м столбце с i-й по j-ю строку включительно. Ссылка в формате A(:,k) возвращает в качестве значения весь k-й столбец матрицы A.

Можно использовать оператор "двоеточие" при указании сразу двух индексов. Например, командой A(i:j,m:n) возвращается подматрица,

30

Источник: https://studfile.net/preview/16433384/