Рефераты. Система математических расчетов MATLAB

                                                  u | v

                                               ans =

1        1  1  1  0  1

q       Выражения, использующие оператор ~ выполняют логическое отрицание. Это дает ложный результат, если операнд является истинным и истинный, если операнд явля-ется ложным. При численных элементах, любой ненулевой операнд становится нулев-ым (логическим нулем), а любой нулевой элемент становится равным (логической) единице. Рассмотри операцию логического отрицания вектора u

                                             ~u

                                                ans =

                                                           0  1  0  0  1  0

Использованием логических операторов с массивами

Логические операторы MATLAB-а сравнивают соответствующие элементы массивов одина-ковой  размернсти. Для векторов или прямоугольных массивов, оба операнда должны иметь одинаковый размер, или один из них должен быть скаляром. Если один из элементов являе-тся скаляром, а второй – нет, то здесь также имеет место описанное выше свойство скалярно-го расширения.


Логические функции

В дополнение к логическим операторам, MATLAB имеет ряд логических функций.


Функция

Описание

Примеры

xor

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

a = 1;        b = 1;

xor(a,b)

ans =

            0

all

Возвращает 1, если все элементы ее аргумента являются истинными или не равны нулю; в противном случае результат равен логическому нулю. Над матрицами функция all работает вдоль столбцов

A = [0  1  2; 3  5  0]

  A =

            0  1  2

            3  5  0

all(A)

      ans =

             0 1 0

any

Возвращает единицу, если любой из аргументов является истинным или ненулевым; в против-ном случае вовращает 0. Как и all , any работает вдоль столбцов матриц.

v = [5   0   8];

any(v)

   ans =

               1


Ряд других функций MATLAB-а выполняет логические операции. Например, функция isnan возвращает 1 для  NaN; функция isinf возвращает 1 для Inf. Более подробный список можно найти в директории ops.


Логические выражения использующие функцию find

Функция find определяет индексы числового массива, удовлетворяющие заданному логичес-кому условию. Эта функция удобна для создания логических масок (шаблонов) и матриц ин-дексов. В наиболее общей форме, функция  find возвращает единственный вектор индексов. Этот вектор может быть использован для индексации массивов любого размера или формы. Например, в приведенном ниже примере функция find позволяет легко заменить все элемен-ты матрицы А больше 8 на число 100:

A = magic(4)

 

                                                         A =

                                                                  16   2   3   13

                                                                   5   11 10   8

                                                                   9    7    6  12

                                                                    14  15  1

i = find (A > 8);

                                                                      A(i) = 100

                                                         A =

100  2  3  100

5  100  100  8

100  7  6  100

4  100  100  1

 

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


Приоритеты операторов

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


  1. Обычные скобки ().

  1. Транспонирование (.'), степень (.^), комплексно-сопряженное транспонирование('), степень матрицы(^).

  1. Унарный плюс (+), унарный минус (-), логическое отрицание (~).

  1. Умножение (.*), правое деление (./), левое деление(.\), матричное умножение (*), матричное правое деление (/), матричное левое деление (\).

  1. Сложение (+), вычитание (-).

  1. Оператор двоеточия (:).

  1. Меньше чем (<), меньше чем или равно (<=), больше чем (>), больше чем или равно (>=), равно (==), не равно (~=).

  1. Логическое И (&).

  1. Логическое ИЛИ (|).

Изменение приоритетов операторов

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


A = [3   9   5];

B = [2   1   5];

 

C = A ./ B.^2

                                                 C =

0.7500   9.0000   0.2000

C = (A. / B) .^2

                                                 C =

2.2500   81.0000  1.0000


Выражения могут также содержать переменные, заданные посредством индексов


b = sqrt (A(2)) + 2*B(1)

 

                                                                      b =

7

Команды управления данными (Flow Control)

В MATLAB-е имеются 8 базовых команд для управления потоками данных:


•  if, совместно с else и  elseif, осуществляет обработку группы выражений, основываясь на

  некотором логическом условии.

•  switch, совместно с case и otherwise, обрабатывает различные группы выражений, основы- 

  ваясь на значении некоторого логического условия.

•  while осуществляет обработки группы выражений неопределенное число раз, основываясь

  на некотором логическом условии.

•  for осуществляет обработку группы выражений определенное (заданное) число раз.

•  continue передает управление к следующей итерации в циклах for или while , пропуская

   все оставшиеся выражения в теле цикла.

•  break прекращает обработку выражений и выходит из циклов, созданных командами for

  или  while.

•  try...catch изменяет последовательность выполнения команд, если во время выполнения

  программы получено сообщение об ошибке.

•  return приводит к прекращению выполнения данной программы и к возврату в вызываю-

  щую функцию.

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


 Внимание! Во многих случаях вы можете ускорить выполнение программ MATLAB-а, путем замены циклов с командами for и while векторными выражениями (см. ниже).


Команды if, else, and elseif

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


if (логическое выражение)logical_expression

                                              операторы

                                          end


Если логическое выражение истинно, то есть равно 1, MATLAB выполняет все операторы между строками, содержащими команды if и end . После этого он продолжает выполнять ко-манды. находящиеся за строкой с end. Если логическое выражение ложно, то есть дает логи-ческий 0, MATLAB перескакивает через все выражения между строками с if  и end , и про-должает свою работу со строки, следующей за командой end. Например,


                                                if rem (a,2) == 0

                                                    disp('a is even')

                                                    b = a/2;

                                               end

Данный блок проверяет, является ли входной аргумент четным числом и, если да, то выводит в комндную строку соответствующее сообщение и делить число а пополам. В противном случае, данный блок не выполняется. Между строками с if  и end вы можете включить произ-вольное число операторов, содержащих, в свою очередь, любые команды и циклы. Если ло-гическое выражение приводит к нескалярной величине, то для выполнения блока все элемен-ты аргумента должны буть ненулевыми. Например, допустим X является матрицей. Тогда выражение

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.