|
|
|||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
| Вход | |||||||||||||||||||||||||||||||||
|
Раздел "MATLAB\MATLAB"
В.Г.Потемкин "Введение в Matlab" (v 5.3) В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель 3.4. Операторы системы MATLAB 5. Объединение операторов в арифметические выражения. Встроенные функции Операторы системы MATLAB делятся на три категории:
Логические операторы имеют самый низкий приоритет относительно операторов отношения и арифметических операторов. Арифметические операторы. При работе с массивом чисел установлены следующие уровни приоритета среди арифметических операций :
Внутри каждого уровня операторы имеют равный приоритет и вычисляются в порядке следования слева направо. Заданный по умолчанию порядок следования может быть изменен с помощью круглых скобок. Пример Пусть заданы 2 вектора A = [3 9 5]; Результаты выполнения операторов C = A./B. ^ 2 Арифметические операторы допускают использование индексных выражений: b = sqrt (A(2)) + 2*B (1) Арифметические операторы системы MATLAB работают, как правило, с массивами одинаковых размеров. Для векторов и прямоугольных массивов оба операнда должны быть одинакового размера, за исключением единственного случая, когда один из них - скаляр. Если один из операндов скалярный, а другой нет, в системе MATLAB принято, что скаляр расширяется до размеров второго операнда и заданная операция применяется к каждому элементу. Такая операция называется расширением скаляра. Операторы отношения. В системе MATLAB определено 6 следующих операторов отношения:
Операторы отношения выполняют поэлементное сравнение двух массивов равных размерностей. Для векторов и прямоугольных массивов, оба операнда должны быть одинакового размера, за исключением случая когда один из них скаляр. В этом случае MATLAB сравнивает скаляр с каждым элементом другого операнда. Позиции, где это соотношение истинно, получают значение 1, где ложно - 0. Операторы отношения, как правило, применяется для изменения последовательности выполнения операторов программы. Поэтому они чаще всего используются в теле операторов if, for, while, switch. Операторы отношения всегда выполняются поэлементно. Пример. Выполним сравнение двух массивов, используя условие А<B: A = [2 7 6; 9 0 -1; 3 0.5 6];
Полученная матрица указывает позиции, где элемент А меньше соответствующего элемента B. При вычислении арифметических выражений операторы отношения имеют более низкий приоритет, чем арифметические, но более высокий, чем логические операторы. Операторы отношения могут применятся к многомерным массивам, для которых одна из размерностей равна нулю, при условии, что оба массива - одинакового размера или один из них - скаляр. Однако выражения типа A == [ ] применимы только к массивам размера 0х0 или 1х1, а в других случаях вызывают ошибку. Поэтому наиболее универсальный способ проверить, является ли массив пустым - это применить функцию isempty (A). Логические операторы. В состав логических операторов системы MATLAB входят следующие операторы:
В дополнение к этим операторам, каталог bitfun содержит ряд функций, которые выполняют поразрядные логические операции. Логические операторы реализуют поэлементное сравнение массивов одинаковых размерностей. Для векторов и прямоугольных массивов оба операнда должны быть одинакового размера, за исключением случая, когда один из них скаляр. В последнем случае MATLAB сравнивает скаляр с каждым элементом другого операнда. Позиции, где это соотношение истинно, получают значение 1, где ложно - 0. Каждому логическому оператору соответствует некоторый набор условий, которые определяю результат логического выражения:
Пример
Пример
Пример
Логические функции. В дополнение к логическим операторам в состав системы MATLAB включено ряд логических функций:
Пример
Пример u = [1 2 3 4 0]; В данном случае никакого сообщения не появится, но если в качестве вектора u взять вектор u = [0 1 2 0] то появитсясообщение ans = ' Все элементы меньше 3' В случае массивов функция all проверяет столбцы, то есть является ориентированной по столбцам. Пример A = [0 1 2; 3 5 0]
Пример
Полный список логических функций системы MATLAB содержится в каталоге ops. Функция find. Функция find определяет индексы элементов массива, которые удовлетворяют заданному логическому условию. Как правило, она используется для создания шаблонов для сравнения и создания массивов индексов. В наиболее употребительной форме функция к = find( х <условие> ) возвращает вектор индексов тех элементов, которые удовлетворяет заданному условию. A = magic(4)
k = find(A > 8);
Функция вида [i, j] = find(x) позволяет получить индексы ненулевых элементов прямоугольного массива. Функция вида [i, j, s] = find(x) возвращает кроме того и их значения в виде вектора s. Объединение операторов в арифметические выражения. Теперь вы имеете возможность строить выражения, которые используют любую комбинацию арифметических, логических операторов и операторов отношения. Пример (a*b) < (c*d) Используя скобки, можно управлять последовательностью выполнения операций (A & B) == (C | D) Управление последовательностью исполнения операторов. Существуют четыре основных оператора управления последовательностью исполнения инструкций:
Синтаксис:
Описание: Оператор условия if .... end вычисляет некоторое логическое выражение и выполняет соответствующую группу инструкций в зависимости от значения этого выражения. Если логическое выражение истинно, то MATLAB выполнит все инструкции между if и end, а затем продолжит выполнение программы в строке после end. Если условие ложно, то MATLAB пропускает все утверждения между if и end и продолжит выполнение в строке после end. Пример. if rem(a, 2) == 0 Пример. if X Этот оператор равносилен следующему: if all(X(:)) Операторы if ... else ... end и if ... elseif ... end создают дополнительные ветвления внутри тела оператора if:
Пример. if n < 0 % Если n < 0, вывести сообщение об ошибке. Если в операторе if условное выражение является пустым массивом, то такое условие ложно. То есть оператор условия вида if A выполнит инструкции S0 только тогда, когда А - пустой массив.
Синтаксис: switch <выражение> Оператор switch ... case 1 ... case k ... otherwise ... end выполняет ветвления, в зависмости от значений некоторой переменной или выражения. Оператор переключения включает:
Оператор switch работает, сравнивая значение вычисленного выражения со значениями групп case. Для числовых выражений оператор case выполняется, если <значение>== <выражение>. Для строковых выражений, оператор case истинен, если strcmp(значение, выражение) истинно. Пример. switch input_num Оператор switch может использовать множественное условие в единственной группе case посредством включения выражения case, если выражение для этого условия записано в виде массива ячеек: switch var
Синтаксис: while выражение Описание: Оператор цикла с неопределенным числом операций while ... end многократно выполняет инструкцию или группу инструкций, пока управляющее выражение истинно. Если выражение использует массив, то все его элементы должны быть истинны для продолжения выполнения. Чтобы привести матрицу к скалярному значению, следует использовать функции any и all. Пример. n = 1; Выход из while-цикла может быть реализован с помощью оператора break. Если в операторе while, управляющее условие является пустым массивом, то такое условие ложно, то есть оператор вида while A, S1, end никогда не выполнит инструкции S1, если А - пустой массив.
Синтаксис: for <переменная цикла> = <начальное значение>: <приращение>:<конечное значение> Описание: Оператор цикла for .... end выполняет инструкцию или группу инструкций предопределенное число раз. По умолчанию приращение равно 1. Можно задавать любое приращение, в том числе отрицательное. Для положительных индексов выполнение завершается, когда значение индекса превышает <конечное значение>; для отрицательных приращений выполнение завершается, когда индекс становится меньше чем <конечное значение>. Пример Этот цикл выполняется пять раз: Использование массива в качестве переменной цикла. В качестве переменной цикла for могут использоваться массивы. Пример. for i = A определяет переменную цикла i как вектор A(:, k). Для первого шага цикла k равно 1; для второго k равно 2, и так далее, пока k не достигнет значения n. То есть цикл выполняется столько раз, сколько столбцов в матрице A. Для каждого шага i - это вектор, содержащий один из столбцов массива A. Встроенные функции. Начиная с версии MATLAB 5, M-файлы могут содержать коды для более, чем одной функции. Первая функция в файле -это основная функция, вызываемая по имени M-файла. Другие функции внутри файла - это подфункции, которые являются видимыми только для основной функции и других подфункций этого же файла. Каждая подфункция имеет свой собственный заголовок. Подфункции следуют друг за другом непрерывно. Подфункции могут вызываться в любом порядке, в то время как основная функция выполняется первой.
Подфункции mean и median вычисляют среднее и медиану входного списка. Основная функция newstats определяет длину списка и вызывает подфункции, передавая им длинну списка n. Функции внутри одного и того же М-файла не могут обращаться к одним и тем же переменным, если они не объявлены глобальными переменными внутри соответствующих функций, или не переданы им в качестве параметров. Следует иметь в виду, что справка help может видит только основную функцию и не видит подфункций. Когда приходит вызов функции из М-файла, то MATLAB, в первую очередь, проверяет, не является ли эта функция подфункцией. Поскольку первой проверяется наличие подфункций, то можно в качестве имени подфункции использовать имена функций системы MATLAB. Частные каталоги. Они введены в систему MATLAB, начиная с версии 5.0. Частные каталоги представляют собой подкаталог с именем private родительского каталога. М-файлы частного каталога доступны только М-файлам родительского каталога. Поскольку файлы частного каталога не видимы вне родительского каталога, они могут иметь имена совпадающие, с именами файлов других каталогов системы MATLAB. Это удобно в тех случаях, когда пользователь создает собственные версии некоторой функции, сохраняя оригинал в другом каталоге. Поскольку MATLAB просматривает частный каталог раньше каталогов стандартных функций системы MATLAB он в первую очередь находит функцию из частного каталога. В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель
|
|
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
| На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
| E-mail: | ||
| Информация на сайте была обновлена 11.05.2004 |
Copyright 2001-2004 SoftLine Co Наши баннеры |
|