Применение функций обработки данных к векторам. Обращение к элементам вектора

Обращение к элементам вектора

Доступ к элементам вектора или вектор-строки осуществляется при помощи индекса, заключаемого в круглые скобки после имени массива, в котором хранится вектор. Если среди переменных рабочей среды есть массив v, onределенный вектор-строк ой

» v = [1.3 3.6 7.4 8.2 0.9];

то для вывода, например его четвертого элемента, используется индексация:

>>v(4)

ans =

8.2000

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

» v(2) = 555

v =

1.3000 555.0000 7.4000 8.2000 0.9000

Из элементов массива можно формировать новые массивы, например

» u =[v(3); v(2); v(l)]

u =

7.4000

555.0000

1.3000

Для помещения определенных элементов вектора в другой вектор в заданн ом порядке служит индексация при помощи вектора. Запись в массив w четвертого, второго и пятого элементов v производится следующим образом:

» ind =[4 2 5];

» w = v(ind)

w =

8.2000 555.0000 0.9000

MatLab предоставляет удобный способ обращения к блокам последовательно расположенных элементов вектора или вектор-строки. Для этого служит индексация при помощи знака двоеточия. Предположим, что в массиве w, соответствующем вектор-строке из семи элементов, требуется заменить нулями элементы со второго по шестой. Индексация при помощи двоеточия позволяет просто и наглядно решить поставленную задачу:

>> w = [0.1 2.9 3.3 5.1 2.6 7.1 9.8];

>> w(2:6) = 0;

w =

0.1000 00000 9.8000

Присваивание w(2:6)=0 эквивалентно последовательности команд w(2)=0; w(3)=0; w(4)=0; w(5)=0; w(6)=0.

Индексация при помощи двоеточия оказывается удобной при выделении части из большого объема данных в новый массив:

>> w = [0.1 2.9 3.3 5.1 2.6 7.1 9.8];

>> wl = w(3:5)

w1=

3.3000 5.1000 2.6000

Составьте массив w2, содержащий элементы w кроме четвертого. Используйте двоеточие и сцепление строк:

» w2 = [w(l:3) w(5:7)]

w2 =

0.1000 2.9000 3.3000 2.6000 7.1000 9.8000

Элементы массива могут входить в выражения. Нахождение, например среднего геометрического из элементов массива и, можно проделать следующим образом:

» gm = (u(1)*u(2)*u(3))^(1/3)

gm =

17.4779

Конечно, этот способ не очень удобен для длинных массивов. Для того чтобы найти среднее геометрическое, необходимо набрать в формуле все элементы массива. В MatLab существует достаточно много специальных функций, облегчающих подобные вычисления.

Перемножение элементов вектора или вектора-строки осуществляется при помощи функции prod:

» z = [3; 2; 1; 4; 6; 5];

» P = prod(z)

Р = 720

Зная об этой функции, несложно догадаться, как просто найти среднее квадратичное элементов вектора z:

» gm = prod(z)^(l/length(z))

gm =

2.9938

Функция sum предназначена для суммирования элементов вектора. Попробуйте самостоятельно вычислить среднее арифметическое элементов вектора Z Проверьте результат, вычислив среднее арифметическое, используя встроенную функцию mean. Вот что должно получиться:

» sum(z) / length(z)

ans =

3.5000

» mean(z)

ans =

3.5000

Для нахождения минимума и максимума из элементов вектора служат встроенные функции min и max:

» M=max(z)

М =

» m=min(z)

m =

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

Вызовите, например, функцию min с двумя выходными аргументами:

» [m, k] = min (z)

m=

k=

В результате переменной m будет присвоено значение минимального элемента массива z, а номер минимального элемента занесен в переменную k.

Как же узнать, как именно можно вызывать функцию. Для этого следует набрать в командной строке help и имя функции. MatLab выведет в командное окно всевозможные способы обращения к функции с дополнительными пояснениями.

В число основных функций для работы с векторами входит функция упорядочения вектора по возрастанию его элементов sort.

» r = [9.4 -2.3 -5.2 7.1 0.8 1.3];

» R = sort(r)

R=

-5.2000 -2.3000 0.8000 1.3000 7.1000 9.4000

Попробуйте упорядочить вектор по убывянию, используя эту же самую функцию sort. Правильный ответ

>>R1=-sort(r)

R1 =

9.4000 7.1000 1.3000 0.8000 -2.3000 -5.2000

Упорядочение элементов в порядке возрастания их модулей производится с привлечением функции abs:

» R2 = sort(abs (г))

R2 =

0.8000 1.3000 2.3000 5.2000 7.1000 9.4000

Вызов sort с двумя выходными аргументами приводит к образованию массива индексов соответствия элементов упорядоченного и исходного массивов:

>>[rs, ind] = sort(r)

rs =

- 5 2000 -2.3000 0.8000 1.3000 7.1000 9.4000

ind =

3 2 5 6 4 1

Равенство г(ind(k))=rs(k) для k от 1 до length(r) связывает исходный массив г, упорядоченный rs и массив индексов ind.

Если аргументом функций max и min является вектор, состоящий из комплексных чисел, то результатом является максимальный или минимальный по модулю элемент. Функция sort также упорядочивает комплексный вектор по модулю, а компоненты с равными модулями располагаются в порядке возрастания фаз.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: