Иллюстрированный самоучитель по MatLab

Применение оператора: (двоеточие)

Очень часто необходимо произвести формирование упорядоченных числовых последовательностей. Такие последовательности нужны для создания векторов или значений абсциссы при построении графиков. Для этого в MATLAB используется оператор : (двоеточие):

Начальное_значение:Шаг:Конечное_значение

Данная конструкция порождает возрастающую последовательность чисел, которая начинается с начального значения, идет с заданным шагом и завершается конечным значением. Если Шаг не задан, то он принимает значение 1. Если конечное значение указано меньшим, чем начальное значение, – выдается сообщение об ошибке. Примеры применения оператора: даны ниже:

>> 1:5
ans =
12345
>> i=0:2:10
i = 0 2 4 6 8 10
>> j=10:-2:2
j =10 8 6 4 2
>> V=0:pi/2:2*pi;
>> V
V =
0 1.5708 3.1416 4.7124 6.2832
>> X= l:-0.2:0
X=
1.0000 0.8000 0.6000 0.4000 0.2000 0
>> 5:2
ans=
Empty matrix:1-by-0

Как отмечалось, принадлежность MATLAB к матричным системам вносит коррективы в назначение операторов и приводит при неумелом их использовании к казусам. Рассмотрим следующий характерный пример:

>> x=0:5
x=
0 1 2 3 4 5
>> cos(x)
ans =
1.0000 0.5403 -0.4161 -0.9900 -0.6536 0.2837
>> sin(x)/x
ans = -0.0862

Вычисление массива косинусов здесь прошло корректно. А вот вычисление массива значений функции sin(x)/x дает неожиданный, на первый взгляд, эффект – вместо массива с шестью элементами вычислено единственное значение!

Причина "парадокса" здесь в том, что оператор / вычисляет отношение двух матриц, векторов или многомерных массивов. Если они одной размерности, то результат будет одним числом, что в данном случае и выдала система. Чтобы действительно получить вектор значений sin(x)/x, надо использовать специальный оператор поэлементного деления массивов – . /. Тогда будет получен массив чисел:

>> sin(x)./x
Warning: Divide by zero.
ans =
NaN 0.8415 0.4546 0.0470 -0.1892 -0.1918

Впрочем, и тут без особенностей не обошлось. Так, при х=0 значение sin(x)/x дает устранимую неопределенность вида 0/0=1. Однако, как и всякая численная система, MATLAB классифицирует попытку деления на 0 как ошибку и выводит соответствующее предупреждение. А вместо ожидаемого численного значения выводится символьная константа NaN, означающая, что неопределенность 0/0 – это все же не обычное число.

Выражения с оператором: могут использоваться в качестве аргументов функций для получения множественных их значений. Например, в приводимом ниже примере вычислены функции Бесселя порядка от 0 до 5 со значением аргумента 0.5:

>> bessel(0:1:5.1/2)
ans =
0.9385 0.2423 0.0306 0.0026 0.0002 0.0000

А в следующем примере вычислено шесть значений функции Бесселя нулевого порядка для значений аргумента от 0 до 5 с шагом 1:

>> bessel(0.0:1:5)
ans =
1.0000 0.7652 0.2239 -0.2601 -0.3971 -0.1776

Таким образом, оператор : является весьма удобным средством задания регулярной последовательности чисел. Он широко используется при работе со средствами построения графиков. В дальнейшем мы расширим представление о возможностях этого оператора.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.