Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Операторы отношения и логические операторыСодержание книги
Поиск на нашем сайте
Операторы отношения служат для поэлементного сравнения двух операндов, в качестве которых могут выступать числа, векторы или матрицы. При этом сравниваемые векторы или матрицы должны иметь одинаковые размеры. Если операнды одинаковы, то программа возвращает 1 (True – Истина), в противном случае – 0 (False – Ложь). Перечень операторов отношения с соответствующими им функциями представлен в таблице 4.1.
Таблица 4.1. Операторы отношения и их функции
Операторы = = и ~= сравнивают действительные и комплексные переменные. При этом сравниваются действительные и комплексные части числа. Операторы <, <=, >, >= при сравнении комплексных чисел сравнивают только действительные части числа. Примеры приведены в табл. 4.2.
Таблица 4.2. Примеры использования операторов отношения
Если при вычислениях надо формально определить, является ли переменная x комплексной, можно вызвать функцию isreal(x), возвращающую 1 если x не является комплексной и 0 в противном случае. В выражениях, вводимых в командном окне системы MATLAB, операторы отношения могут использоваться наряду с арифметическими операторами. Рассмотрим пример вычисления выражения, содержащего операторы отношения: >> a=1;b=-1;c=2; >> (a>=c)+(b==a)+(c>a) ans = Здесь значения выражений (a >= c) и (b == a) равны 0 (Ложь), значение выражения (c > a) равно 1 (Истина). В результате переменная ans, являющаяся суммой значений этих трех выражений, оказывается равной 1. Операции отношения имеют более низкий приоритет, чем арифметические операции. Но в этом примере переменная ans равна сумме значений трех операций отношения только потому, что эти операции заключены в круглые скобки. Если же скобки опустить, результат будет иным: >> a>=c+b==a+c>a ans = При поэлементном сравнении двух массивов одинаковых размеров с помощью операторов отношения результат будет представлен в виде массива того же размера, состоящего из нулей и единиц. Пример: >> A=[1 0;-2 3] A = 1 0 -2 3 >> B=[2 3;-3 2] 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. Логические операторы и их функции
Первые три операции являются двухоперандными (бинарными), а операция < Не > является унарной (однооперандной). При выполнении логических операций «истинными» считаются операнды, не равные нулю, а «ложными» – операнды, равные нулю. При этом результатом операции < И > будет 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. Операторы цикла
Цикл for используется для повторения команды или набора команд в случае, когда число повторений заранее известно. Синтаксис цикла for имеет следующий вид: for var = b1:b2:b3 Команды (текст программы) End Здесь var – переменная (счетчик) цикла, которая при каждом повторении цикла изменяется от начального значения b1 до конечного значения b3 с шагом b2 (если параметр b2 не указан, по умолчанию его значение принимается равным 1). Переменная цикла может принимать не только целые, но и вещественные значения с любым знаком. Команды в тексте программы разделяются запятой <, >, точкой с запятой <; > или нажатием клавиши <Enter>. Ввод команд завершается командой end. Цикл завершается, как только значение var превысит b3. Команды между for и end воспринимаются системой как части одной сложной команды. Поэтому нажатие клавиши <Enter> для перехода к следующей строке не приводит в данном случае к выполнению этих команд. Выполнение команд начинается только тогда, когда введена «закрывающая скобка» сложной команды в виде ключевого слова end. Если несколько сложных команд такого типа вложены одна в другую, вычисления начинаются лишь тогда, когда записан конец (end) наиболее охватывающей (внешней) сложной команды. Например, для поиска суммы элементов матрицы A, расположенных ниже главной диагонали, в файл-функции Sn следует использовать два цикла for, причем начальное значение счетчика внутреннего цикла зависит от текущего значения счетчика внешнего цикла: function s=Sn(A) [n m]=size(A); s=0; for j=1:m for i=j+1:n s=s+A(i,j); end end В том случае, когда число повторений заранее неизвестно и определяется в ходе выполнения набора команд, следует организовать цикл while. Цикл while работает, пока выполнено условие цикла. Пример файл-функции polsum, которая находит сумму всех первых положительных элементов вектора: function s=polsum(x) s=0; k=1; while x(k)>0 s=s+x(k); k=k+1; end Вызовем файл-функцию polsum из командной строки: >> a=[1 -2 3]; >> S=polsum(a) S = Файл-функция polsum имеет один недостаток: если все элементы вектора – положительные числа, то k становится больше длины вектора x, что приводит к ошибке, например: >> a=[1 2 3]; >> S=polsum(a) ??? Index exceeds matrix dimensions. Кроме проверки значения x(k), следует позаботиться о том, чтобы значение k не превосходило длины вектора x. Вход в цикл должен осуществляться только при одновременном выполнении условий k <= length(x) и x(k) > 0, т. е. необходимо применить логический оператор < И >, обозначаемый в MATLAB символом &. Заменим в файл-функции polsum условие цикла while x(k)>0 на составное while k <= length(x)&x(k) > 0. Если первое из условий не выполняется, то второе условие проверяться не будет, именно поэтому выбран такой порядок операндов. Теперь файл-функция polsum будет работать верно для любых векторов: >> a=[1 2 3]; >> S=polsum(a) S = Операторы ветвления
Ветвление в ходе работы программы осуществляется при помощи конструкции if-elseif-else. Самый простой вариант ее использования (без elseif и else) реализован в файл-функции possum, которая предназначена для нахождения суммы всех элементов вектора, больших 2: function s=possum2(x) s=0; for k=1:length(x) if x(k)>2 s=s+x(k); end end Если ход программы должен изменяться в зависимости от нескольких условий, то следует использовать полную конструкцию if-elseif-else. Каждая из ветвей elseif в этом случае должна содержать условие выполнения набора команд, размещенных после нее. Важно понимать, что условия проверяются подряд, первое выполненное условие приводит к работе соответствующего набора, выходу из конструкции if-elseif-else и переходу к команде, следующей за end. У последней ветви else не должно быть никакого условия. Команды, находящиеся между else и end, выполняются в том случае, если все условия оказались невыполненными. Предположим, что требуется написать файл-функцию для вычисления кусочно-заданной функции:
f(x)= Она имеем вид function f=pwf(x) if x<-1 f=-abs(x)^(1/3); elseif x<=3 f=x; else f=2-x; end Первое условие x < -1 проверяется в ветви if. Отметим, что условие – 1 ≤ x не требуется включать в следующую ветвь elseif, поскольку в эту ветвь программа заходит, если предыдущее условие (x < -1) не выполнено. Условие x > 3 также проверять не надо. Если не выполнены два предыдущих условия x < -1 и x ≤ 3, то x будет больше трех.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 276; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.218.44 (0.009 с.) |