48968 (597417), страница 19

Файл №597417 48968 (Система математических расчетов MATLAB) 19 страница48968 (597417) страница 192016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 19)

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

Логические операторы 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

4 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 является матрицей. Тогда выражение

if X

операторы

end

эквивалентно следующему

if all(X(:))

операторы

end

При использовании с if , команды else и elseif дают следующие дополнительные возможно-сти создания программ:

• Команда else не имеет логического условия. Операторы, связанные с данной командой вы-

полняются, если предшествующее условие команды if (и, возможно, elseif) является лож-

ным.

• Команда elseif имеет логическое условие, которое оценивается, если предшествующее ус-

ловие команды if (и, возможно, elseif), является ложным. Если логическое условие данной

команды elseif является истинным, то выполняются соответствующие операторы, следую-

щие за данной командой. Вы можете иметь произвольное число команд elseif в пределах

одного блока с if.

if n < 0 % Если n отрицательно, дать сообщение об ошибке

disp('Input must be positive');

elseif rem (n, 2) == 0 % Если n положительно и четно, разделить на 2.

A = n/2;

else

A = (n+1) /2; % Если n положительно и нечетно, прибавить 1 и

% разделить на два.

end

Команда if и пустые массивы

Если логическое условие, связанное с if, приводит к нулевому массиву, то оно оценивается как ложное. Например, если А является пустым массивом, то следующий блок

if A

S1

else

S0

end

выполняет оператор S0.

Команда switch

Команда switch осуществляет обработку определенных операторов, исходя из значения пере-менной или выражения. Ее базовая форма имеет вид

switch выражение (скаляр или строка символов)

case значение 1

операторы % Выполняются если выражение == значение 1

case значение 2

операторы % Выполняются если выражение == значение 2

.

.

.

otherwise

операторы % Выполняются если выражение не соответствует не одному

% значению, связанному с командами case

end

Данный блок состоит из:

• Слова switch за которым следует выражение которое нужно оценить..

• Любого числа блоков с командами case. Эти блоки состоят из слова case, за которым на той же строке следует возможное значение выражения за словом switch. Последующие строки содержат операторы, которые необходимо выполнить при указанном значении выражения в первой строке за словом switch. Эти строки могут быть любыми допустимыми выражени-ями, включая другие циклы switch. Выполнение группы операторов, связанных с данной ко-мандой case прекращается, когда MATLAB встречает следующую команду case или слово

otherwise. Отметим, что всегда выполняется только первый подходящий блок с case.

• Не обязательной группы операторов, начинающихся словом otherwise; эта группа обраба-тывается, если значение выражения не было перехвачено каким-либо предшествующим бло-ком с case. Обработка группы операторов за словом otherwise прекращается на команде end.

• Заключительной команды end.

Блок с командой switch работает путем сравнения входного выражения, которе может быть численным скаляром или строкой символов, с каждым значением ключей case. В случае чис-ленных выражений выполняется какой-либо (первый) блок, если справедливо логическое ра-венство значение == выражение. При выражениях в виде строки символов, блок выполня-ется, если истинно выражение strcmp(значение,выражение) (команда strcmp осуществляет логическое сравнение строк символов) .

Приведенный ниже код дает простой пример использования команды switch. Он проверяет переменную input_num и сравнивает ее с заданными числами. Если значения input_num равны –1, 0, или 1, команды case производят вывод значений на экран в виде текста. Если переменная input_num не равна не одному из указанных значений, выполнение переходит к строке otherwise и программа выводит на экран текст 'other value'другое значение» ).

switch input_num

case –1

disp('negative one');

case 0

disp('zero');

case 1

disp('positive one');

otherwise

Характеристики

Тип файла
Документ
Размер
9,13 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6548
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее