Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 03-04.doc
Скачиваний:
2
Добавлен:
19.09.2019
Размер:
123.39 Кб
Скачать

Глава 4 программирование

Для освоения методов программирования в MATLAB не нужно обладать какими-то специальными знаниями. Встроенный язык программирования MATLAB (М-язык) достаточно прост, он содержит необходимый минимум конструкций. И хотя работа в «режиме калькулятора» не является программированием, все рассмотренные ранее команды, операторы и функции являются типичными инструментами М-языка.

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

4.1 Операторы отношения и логические операторы

Операторы отношения служат для поэлементного сравнения двух операндов, в качестве которых могут выступать числа, векторы или матрицы. При этом сравниваемые векторы или матрицы должны иметь одинаковые размеры. Если операнды одинаковы, то программа возвращает 1 (True Истина), в противном случае0 (False Ложь). Перечень операторов отношения с соответствующими им функциями представлен в табл. 4.1.

Таблица 4.1. Операторы отношения и их функции

Оператор

Название

Функция

==

Равно

eq

~=

Не равно

ne

<

Меньше

lt

>

Больше

gt

<=

Меньше или равно

le

>=

Больше или равно

ge

Операторы = = и ~= сравнивают действительные и коплексные переменные. При этом сравниваются действительные и комплексные части числа.

Операторы <, <=, >, >= при сравнении комплексных чисел сравнивают только действительные части числа.

Примеры приведены в табл. 4.2.

Таблица 4.2. Примеры использования операторов отношения

Выражение

Функция

Результат

>> 3==3

>> eq(3,3)

ans =

1

>> 5~=5

>> ne(5,5)

ans =

0

>> 4+2i==4+i

>> eq(4+2i,4+i)

ans =

0

>> 7.2<8.3

>> lt(7.2,8.3)

ans =

1

>> 1.4+5i<1.5+i

>> lt(1.4+5i,1.5+i)

ans =

1

>> 3<=2.33

>> le(3,2.33)

ans =

0

Если при вычислениях надо формально определить, является ли переменная x комплексной, можно вызвать функцию isreal(x), возвращающую 1, если x не является комплексной, и 0 в противном случае.

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

>> a=1;b=-1;c=2;

>> (a>=c)+(b==a)+(c>a)

ans =

1

Здесь значения выражений (a>=c) и (b==a) равны 0 (Ложь), значение выражения (c>a) равно 1 (Истина). В результате переменная ans, являющаяся суммой значений этих трех выражений, оказывается равной 1.

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

>> a>=c+b==a+c>a

ans =

0

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

>> A=[1 0;-2 3];B=[2 3;-3 2];

>> A>B

ans =

0 0

1 1

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

>> A=[1 0;-2 3];b=0.5;

>> A>b

ans =

1 0

0 1

Логические операторы предназначены для выполнения поэлементных логических операций над массивами одинаковых размеров. Логические операторы и соответствующие им функции приведены в табл. 4.3.

Таблица 4.3. Логические операторы и их функции

Оператор

Название

Функция

&

Логическое И

and

|

Логическое ИЛИ

or

Отсутствует

Исключающее ИЛИ

xor

~

Логическое НЕ

not

Первые три операции являются двухоперандными (бинарными), а операция "Не" является унарной (однооперандной).

При выполнении логических операций «истинными» считаются операнды, не равные нулю, а «ложными» – операнды, равные нулю. При этом результатом операции "И" будет 1, если оба операнда не равны нулю, и 0, если хотя бы один из операндов нулевой. Операция "ИЛИ" дает 1, если хотя бы один операнд не равен нулю. Операция "исключающее ИЛИ" выдает 1 лишь тогда, когда один из операндов равен нулю, а другой не равен, в остальных случаях она выдает 0. Операция "Не" выдает 1, если ее единственный операнд равен нулю, и 0 в противном случае.

Примеры использования логических операторов:

>> A=[1 0;-2 3];B=[2 3;-3 2];

>> and(A,B) или >> A&B

ans =

1 0

1 1

>> or(A,B) или >> A|B

ans =

1 1

1 1

>> xor(A,B)

ans =

0 1

0 0

>> not(A) или >> ~A

ans =

0 1

0 0

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

>> A=[1 0;-2 3];b=3;

>> xor(A,b)

ans =

0 1

0 0

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

Приоритеты операций системы MATLAB в порядке убывания приведены ниже:

1. Круглые скобки <( )>.

2. Транспонирование <.'>, транспонирование с комплексным сопряжением<'>, возведение в степень <^>, поэлементное возведение в степень <.^>.

3. Унарный плюс <+>, унарный минус <–>, логическое отрицание <~>.

4. Умножение и деление (в том числе поэлементное) <*>, </>, <\>, <.*>, <./>, <.\>.

5. Сложение <+> и вычитание <–>.

6. Операции отношения <, <=, >, >=, ==, ~=.

7. Логическое И <&>.

8. Логическое ИЛИ <|>.

Отметим, что сначала выполняются операции над агументами функций eq, ne, lt, gt, le, ge, and, or, not, если использовать их вместо соответствующих им операторов. Например, два выражения and(A,B)+F и A&B+F не эквивалентны.

Справка – doc ops.

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