Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Использование двоеточия




4.1. Автозаполнение

Matlab предоставляет возможность автоматического заполнения векторов, каждый элемент которых отличается от предыдущего на постоянную величину, т.е. шаг. Для этого служит двоеточие. Формирование вектора в этом случае выполняется по схеме

ИмяВектора = НачальноеЗначение: Шаг: КонечноеЗначение

Например

>> x=1:0.2:2

x =

1.0000 1.2000 1.4000 1.6000 1.8000 2.0000

формируется вектор-строка из шести элементов, имеющих значение от 1 до 2 с шагом 0,2. Формирование вектора-столбца может быть выполнено следующим образом:

>> y=(-2:2:4)'

 

y =

-2

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

Шаг может быть и отрицательным

>> x=1:-0.2:-0.3

x =

1.0000 0.8000 0.6000 0.4000 0.2000 -0.0000 -0.2000

В этом примере последнее значение в векторе-строке не равно заданному конечному значению -0,3, т.к. шаг не укладывается в диапазон [1; -0,3] целое число раз. Поэтому Matlab заканчивает генерацию элементов вектора досрочно.

Шаг, равный единице, при автозаполнении можно и не указывать

>> x=1:5

x =

1 2 3 4 5

 

4.2. Индексация

Символ двоеточия может использоваться не только для автозаполнения (генерации значений элементов), но и для индексации (автоматического перечисления индексов). Пусть, например, в некотором векторе х из семи элементов

>> x=11:17

x =

11 12 13 14 15 16 17

требуется заменить нулями элементы со второго по шестой (не добавить новые элементы, а обнулить уже имеющиеся). Можно, поэлементно перечисляя интересующие элементы, каждому присвоить значение 0.

>> x(2)=0; x(3)=0; x(4)=0; x(5)=0; x(6)=0

x =

11 0 0 0 0 0 17

Результат получен за пять операций присваивания. Хлопотно! Индексация при помощи двоеточия позволяет решить эту задачу быстрее и изящнее

>> x(2:6)=0

x =

11 0 0 0 0 0 17

Последний элемент массива (матрицы или вектора) можно адресовать, используя слово end. Например, пусть требуется в векторе произвольной длины каждый элемент с нечетным номером сделать равным -1. Красивое решение этой задачи без явного циклического перебора, без непосредственной адресации элементов, с автоматическим определением конца интервала обработки может быть следующим:

>> y(1:2:end)=-1

y =

-1 2 -1 4 -1 6 -1 8 -1 10

Особенно эффективно использование двоеточия при работе с матрицами. Например, выражение a(:, 1) следует понимать как все строки первого столбца матрицы а (выделение из матрицы вектора-столбца); a(2,:) – все столбцы второй строки матрицы а (выделение из матрицы вектора-строки); а(:, 2:3) – выделение подматрицы (все строки второго и третьего столбцов матрицы);
а(2:4, 3:5) – выделение подматрицы (столбцы с третьего по пятый строк со второй по четвертую); (a(2:2:end,end) – элементы четных строк последнего столбца матрицы а; а(:) – растягивание матрицы в вектор-столбец (элементы в результирующем векторе располагаются так, как они записаны в памяти (см. рис. 2.1))

>> a=[11 12 13 14; 21 22 23 24; 31 32 33 34]

a =

11 12 13 14

21 22 23 24

31 32 33 34

>> a=a(:)'

В результате получим

a =

Columns 1 through 7

11 21 31 12 22 32 13

Columns 8 through 12

23 33 14 24 34

Здесь значения элементов матрицы заданы равными их индексам (например, ). Знак транспонирования использован для преобразования в вектор-строку. Вектор-строка получилась длинной и не уместилась при эхо-печати в одну строку экрана. Поэтому Matlab распечатал результат в две строки, предварив печать каждой сообщением о номерах элементов напечатанных в ней: "Columns 1 through 7" – столбцы с 1 по 7 (элементы вектора названы столбцами, потому что получившаяся в результате растягивания и транспонирования переменная а – строка с размерами , т.е. это фактически матрица из одной строки и двенадцати столбцов).

Знак двоеточия можно использовать для адресации элементов при конкатенации

а2=[а(:, 1), b, а(:, 3)]

что означает сформировать матрицу а2 как строку (последовательность) из трех столбцов: первый взять равным первому столбцу матрицы a, второй – равным вектору-столбцу b, а третий – равным в третьему столбцу матрицы a. Как и прежде необходимо согласовывать размеры сцепляемых массивов.




Поделиться с друзьями:


Дата добавления: 2014-11-08; Просмотров: 660; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.