Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 324

.pdf
Скачиваний:
6
Добавлен:
30.04.2022
Размер:
880.78 Кб
Скачать

применяется к каждому элементу. Такая операция называется

расширением скаляра.

< <= > >= ~= = =

Операторы отношения

 

 

В системе MATLAB определено 6 следующих операторов отношения:

<меньше;

<= меньше иди равно;

>больше;

>= больше или равно; = = равно тождественно; ~= не равно.

Операторы отношения выполняют поэлементное сравнение двух массивов равных размерностей. Для векторов и прямоугольных массивов оба операнда должны быть одинакового размера, за исключением случая, когда один из них скаляр. В этом случае MATLAB сравнивает скаляр с .каждым элементом другого операнда. Позиции, где это соотношение истинно, получают значение 1, где ложно - 0.

Операции сравнения <, <=, >, >= используют для сравнения только действительной части комплексных чисел; операции = =, ~= осуществляют сравнение как действительных, так и мнимых частей.

& | ~

Логические операции

 

 

В состав логических операторов системы MATLAB входят следующие операторы:

&И;

| ИЛИ;

9

~НЕ.

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

Каждому логическому оператору соответствует некоторый набор условий, которые определяют результат логического выражения:

Логическое выражение с оператором AND (&) является истинным, если оба операнда истинны. Если элементами логического выражения являются числа, то выражение истинно, если оба операнда отличны от нуля.

Логическое выражение с оператором OR (|) является истинным, если один из операндов или оба операнда логически истинны. Выражение ложно, только если оба операнда логически ложны. Если элементами логического выражения являются числа, то выражение ложно, если оба операнда равны

нулю.

Логическое выражение с оператором NOT (~) строит отрицание. Результат логически ложен, если операнд истинен, и истинен, если операнд ложен. Если элементами логического выражения являются числа, то любой операнд, отличный от нуля, становится нулем, и любой нулевой операнд становится

единицей.

xor, all, any, isnan, isinf Логические функции

В дополнение к логическим операторам в состав системы MATLAB включен ряд логических функций:

хоr(а, b) реализует операцию ИСКЛЮЧИТЕЛЬНОЕ ИЛИ. Выражение, содержащее ИСКЛЮЧИТЕЛЬНОЕ ИЛИ истинно, если

10

один из операндов имеет значение TRUE, а другой - FALSE. Для числовых выражений функция возвращает 1, если один из операндов отличен от нуля, а другой – 0;

all возвращает 1, если все элементы вектора истинны

или отличны от нуля;

any возвращает 1, если хотя бы один из элементов аргумента отличен от нуля; иначе возвращается 0. В случае обработки массивов функция any является столбцовоориентированной;

isnan и isinf возвращают 1 если аргументом функции являются переменные, имеющие значения соответственно в NaN

и Inf;

isfinite истинна только для величин, которые не имеют значений inf или NaN (т.е. истинна для всех числовых значений аргумента).

Допустимо использование функций И, ИЛИ и НЕ в явном виде : and, or, not. Аргументами логических операторов могут быть числа и строки, при этом за 1 принимается любое числовое значение, отличное от 0.

Полный список логических функций системы MATLAB содержится в каталоге ops.

 

[]

() = ‘ . , ; : % !

Специальные символы

 

 

 

 

 

 

 

[ ]

Квадратные

Формирование векторов и матриц;

 

 

скобки

указание последовательности выходных

 

 

 

параметров при обращении к функциям,

 

 

 

возвращающим более одного параметра

 

( )

Круглые

Указание порядка выполнения операций в

 

 

скобки

арифметических выражениях;

 

 

 

указание индексов элемента вектора,

 

 

 

матрицы, массива;

 

 

 

указание входных параметров функции

 

=

Знак

Знак присваивания в арифметических

 

 

присваивания

выражениях

 

 

 

11

 

 

Транспониро-

 

Транспонирование,

сопровождаемое

 

 

вание матриц

 

комплексным

сопряжением

для

 

 

 

 

комплексных матриц

 

 

 

 

.

Разделитель -

Десятичная точка;

 

 

 

 

 

 

точка

 

поэлементное выполнение операций над

 

 

 

 

массивом данных

 

 

 

 

 

 

 

Признак продолжения строки

 

 

,

Разделитель –

Указание индексов элемента вектора,

 

 

запятая

 

матрицы, массива;

 

 

 

 

 

 

 

 

отделение операторов языка MATLAB

 

 

;

Разделитель –

Отделение строк матриц или массивов;

 

 

точка

с

подавление вывода на экран результатов

 

 

запятой

 

вычислений

 

 

 

 

 

:

Разделитель –

Заголовок цикла for;

 

 

 

 

 

 

двоеточие

 

формирование

векторов,

выделение

 

 

 

 

строк, столбцов подблоков массива

 

 

%

Указатель

 

Указатель логического конца строки.

 

 

 

 

Следующий за

ним

текст

игнорируется

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

i или j

 

 

Мнимая единица

 

 

 

 

 

 

 

 

 

 

 

 

Константам i и j первоначально присваивается значение, равное sqrt(-1). Они используются для ввода комплексных чисел.

Числа 3+2i, 3+2*i, 3+2j представляют одно и тоже комплексное число.

inf

Бесконечность

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

Например, при выполнении деления на нуль машина выдаст сообщение

12

Warning: Divide by zero ans = Inf.

NaN

Нечисловое значение

NaN – специальная переменная, принятая в стандарте IEEE-арифметики, которая позволяет фиксировать результат, не представимый в виде числа. Следующие операции имеют результат в виде переменной NaN:

умножение вида 0*Inf;

деление вида 0/0 и Inf/Inf;

сложение и вычитание бесконечностей, например

(+Inf) – (-Inf);

вычисление функций остатка rem(x, y) для y = 0 или x

=Inf;

любые арифметические операции с переменной NaN.

pi Число (3.1415926535897…)

 

Константа, рассчитываемая по одной из формул:

 

pi = 4*atan(1) = imag(log(-1)) = 3.1415926535897…

eps

Машинная точность

Переменная eps определяет относительную точность операций с плавающей точкой, которая часто используется для оценки сходимости итерационных методов. Машинная точность eps – это наименьшее число, для которого на данной ЭВМ выполняется соотношение 1.0 + eps > 1.0. Стандартное значение этой переменной составляет 2.220446e-016. Пользователь имеет право назначить этой специальной переменной любое значение, включая 0.

realmax,

Наименьшее и наибольшее положительные

realmin

числа с плавающей точкой

13

realmax – наибольшее число с плавающей точкой для данного компьютера; любое большее значение соответствует переменной Inf.

realmin – наименьшее нормализованное положительное число с плавающей точкой для данного компьютера.

Стандартные значения этих констант соответственно равны:

Realmax = 1.797693134862316е+308;

Realmin = 2.225073858507202е-308.

find

Поиск индексов и значений элементов массива по

 

заданному условию

Функция find определяет индексы элементов массива, которые удовлетворяют заданному логическому условию. Как правило, она используется с целью создания шаблонов для сравнения и образования массивов индексов. В наиболее употребительной форме функция к = find(x <условие>) возвращает вектор индексов тех элементов, которые удовлетворяют заданному условию,

А= magic(4)

А=

16

2

3

13

5

11

10

8

9

7

6

12

4

14

15

1

k = find(A > 8);

 

 

A(k) = 100

 

 

100

2

3

100

5

100

100

8

100

7

6

100

4

100

100

1

Функция вида [i, j] = find(x) позволяет получить индексы ненулевых элементов прямоугольного массива.

14

Функция вида [i, j. s] = find(x) возвращает, кроме того, и их значения в виде вектора s.

Ниже приводится краткое описание ряда функций системы MATLAB (все возможные формы синтаксиса можно посмотреть в справочной системе), которые могут оказаться полезными при обработке массивов экспериментальных данных [1].

sum(X)

Суммирование элементов массива. В

 

случает двумерного массива это вектор-

 

строка, содержащая суммы элементов

 

каждого столбца

 

prod(X)

Аналогична предыдущей функции, но

 

вместо суммы возвращает произведение

sort(x)

Упорядочение элементов массива по воз-

 

растанию. В двумерном массиве происходит

 

упорядочивание элементов каждого столбца.

 

Функция может также возвратить массив ин-

 

дексов, позволяющий восстановить струк-

 

туру исходного массива

 

max(x)

Определение наибольшего элемента мас-

 

сива. В двумерном массиве это вектор-

 

строка, содержащая максимальные элементы

 

столбцов. Для комплексных элементов опре-

 

деление максимума происходит по условию

 

max(abs(x)). Если массив содержит хотя бы

 

один элемент типа NaN, то результатом опе-

 

рации тоже будет NaN

 

min(x)

Аналогична предыдущей функции, но

 

вместо максимального возвращает мини-

 

мальный элемент массива

 

median(x)

Определение срединного значения (ме-

 

дианы) элементов массива.

 

mean(x)

Определение среднего

арифметического

 

значения элементов массива. Для двумерного

 

массива mean(mean(x))

есть математиче-

 

15

 

 

ское ожидание элементов массива

 

std(x)

Определение

стандартных

отклонений

 

элементов массива

 

cov(x)

Определение

ковариационной матрицы

 

элементов массива (т.е. определение диспер-

 

сии элементов массива)

 

corrcoef(x)

Определение

коэффициентов

корреляции

 

элементов массива

 

diff(x,n)

Вычисление конечных разностей порядка

 

n для элементов массива. В случае двумер-

 

ного массива берутся разности столбцов

spline(x,y,x1)

Интерполяция функции одной переменной

 

кубическим сплайном. x1 новый вектор ар-

 

гументов функции

 

16

Г Р А Ф И Ч Е С К И Е С Р Е Д С Т В А С И С Т Е М Ы MATLAB

plot

Построение графиков отрезками прямых

Функции одной переменной y(x) находят широкое применение в практике математических и других расчетов, а также в технике компьютерного математического моделирования. Для отображения таких функций используются графики в Декартовой системе координат. При этом строятся две оси – горизонтальная X и вертикальная Y – и задаются координаты x и y, определяющие узловые точки y(x). Эти точки соединяются друг с другом отрезками прямых линий. Поскольку MATLAB представляет собой матричную систему, совокупность точек y(x) задается векторами X и Y одинакового размера.

Синтаксис: plot(x,y) plot(y) plot(x,y,’s’)

plot(x1,y1,’s1’,x2,y2,’s2’,…)

plot(x,y) строит график функции y(x). Если X или Y матрица, то строятся графики по данным в матрице.

plot(y) строит график функции y(i), при этом значения берутся из вектора Y, а i представляет собой индекс соответствующего элемента. Если Y содержит комплексные элементы, то выполняется команда plot(real(Y), imag(Y)). Во всех других случаях мнимая часть игнорируется.

plot(x,y,’s’) строит график функции y(x) но с заданием типа линии графика в виде строковой константы, которая может принимать следующие значения:

Цвет линии

 

Тип точки

 

Тип линии

y

желтый

.

точка

-

сплошная

m

фиолетов

o

окружность

:

двойной пунктир

 

 

 

17

 

 

 

ый

 

 

 

 

c

голубой

x

крест

-.

штрих-пунктир

r

красный

+

плюс

--

штриховая

g

зеленый

*

звездочка

 

 

b

синий

s

квадрат

 

 

w

белый

d

ромб

 

 

k

черный

v

треугольник

 

 

 

 

 

(вниз)

 

 

 

 

^

треугольник

 

 

 

 

 

(вверх)

 

 

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

Функция plot(x1,y1,’s1’,x2,y2,’s2’,…) строит на одном графике ряд линий, представленных данными вида (x,y,’s’).

При отсутствии указания на цвет линий и точек он выбирается автоматически одним из шести табличных цветов (исключая белый). Если линий больше шести, то выбор цветов повторяется. Для монохромных систем линии выделяются стилем.

meshgrid

Функция создания массивов трехмерной графики

Трехмерная поверхность обычно описывается функцией двух переменных z(x,y). Специфика построения трехмерных графиков требует не просто задания ряда значений x и y, то есть векторов x и y – она требует определения двумерных массивов для X и Y матриц.

Синтаксис:

[X,Y] = meshgrid(x,y) – преобразует область, заданную векторами x и y в массивы X и Y, которые могут быть использованы для вычисления функции двух переменных и построения трехмерных графиков. Строки выходного массива X являются копиями вектора x, а столбцы Y – копиями вектора y;

meshgrid(x) – аналогична [X,Y] = meshgrid(x,x);

18