Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Применение команд обработки данных к векторам и матрицам
Команда max(V) выдает значение максимального по значению элемента вектора V. Аналогично, команда min(V) извлекает минимальный элемент вектора V. Команды mean(V) и std(V) выдают, соответственно, среднее значение и среднеквадратическое отклонение вектора V. Команда сортировки sort(V) формирует вектор, элементы которого распределены в порядке возрастания их значений. Команда sum(V) возвращает сумму элементов вектора V. Команда prod(V) выдает произведение всех элементов вектора V. Команда cumsum(V) формирует вектор того же типа и размера, любой элемент которого является суммой всех предыдущих элементов вектора V (вектор кумулятивной суммы). Команда cumprod(V) создает вектор, элементы которого являются произведением всех предыдущих элементов вектора V. Команда diff(V) выдает вектор, имеющий размер на единицу меньший, чем размер вектора V, элементами которого является разность между соседними элементами вектора V. Применение описанных команд проиллюстрировано ниже на одном и том же векторе V: > > V=[1.1.5.1.1.4] V = 1.0000 0.1000 0.5000 0.1000 0.1000 0.4000 > > disp(length(V)) > > disp(max(V)) > > disp(min(V)) 0.1000 > > disp(mean(V)) 0.3667 > > disp(std(V)) 0.3559 > > disp(sort(V)) 0.1000 0.1000 0.1000 0.4000 0.5000 1.0000 > > disp(sum(V)) 2.2000 > > disp(prod(V)) 2.0000e-004 > > disp(cumsum(V)) 1.0000 1.1000 1.6000 1.7000 1.8000 2.2000 > > disp(cumprod(V)) 1.0000 0.1000 0.0500 0.0050 0.0005 0.0002 > > disp(diff(V)) -0.9000 0.4000 -0.4000 0 0.3000 Часто необходимо знать не только значение минимального или максимального элемента в массиве, но и его индекс (порядковый номер). Если указать второй выходной параметр, то можно получить дополнительную информацию о первом индексе элемента, значение которого является максимальным или минимальным: > > [M, n]=max(V) M = n = > > [M, n]=min(v) M = 0.1000 n = Для того, чтобы упорядочить вектор V по убыванию, также используем команду sort: > > R=-sort(-V) R = 1.0000 0.5000 0.4000 0.1000 0.1000 0.1000 Вызов sort с двумя выходными аргументами приводит к образованию массива индексов соответствия элементов упорядоченного и исходного массивов: > > [R, ind]=sort(V) R = 0.1000 0.1000 0.1000 0.4000 0.5000 1.0000 ind = 2 4 5 6 3 1 Применение команд обработки данных к некоторым последовательно расположенным элементам вектора не представляет труда. Например, произведение элементов вектора V со второго по шестой вычисляется так: > > P=prod(V(2: 6)) P = 2.0000e-004 Сумма элементов вектора V с четными индексами находится следующим образом: > > ind=2: 2: length(V); > > s=sum(V(ind)) s = 0.6000 Если вектор V состоит из комплексных чисел, команды max(V) и min(V) выдают максимальный и минимальный по модулю элемент. Команда sort упорядочивает комплексный вектор по модулю, а компоненты с равными модулями располагаются в порядке возрастания фаз. Команды max, min, mean, std, sort, sum, prod, cumsum, cumprod, diff могут применятся к матрицам. Если M матрица, то команда max(M) извлекает максимальный элемент каждого столбца: > > A=[7 1 -1; 3 4 -4; 2 3 4] A = 7 1 -1 3 4 -4 2 3 4 > > m=max(A) m = 7 4 4 Если указать два выходных параметра, то получим номера строк c максимальными элементами: > > [m, n]=max(A) m = 7 4 4 n = 1 2 3 Если в качестве второго входного параметра sum указать 2, то cуммирование произойдет по строкам. Например: > > M=[1 2; 3 4; 5 6] M = 1 2 3 4 5 6 > > disp(sum(M, 2)) Для вычисления суммы всех элементов матрицы требуется дважды применить sum: > > disp(sum(sum(M))) Пример: Для матрицы
A =.
размера 6× 6 вычислить величину . Решение: > > A=[1.5 -1 1.4 1 1 -5 -2 1 1 -2 -2.5 -1 1 -1 2 -4.3 1.2.1 -3 -2 1 1.4 1 -1 1 -2 1 1.7 1]; > > p=prod(sum(A.^A, 2)) p = 2.2183e+003 Подробнее о командах обработки данных можно узнать в разделе datafun справочной системы MATLAB. Создание специальных матриц
ВMATLAB предусмотрены команды для создания векторов и матриц специального вида. Рассмотрим некоторые из них: zeros(M, N) – создает матрицу размером M× N c нулевыми элементами: > > zeros(3, 4) ans = 0 0 0 0 0 0 0 0 0 0 0 0 ones(M, N) – создает матрицу размером M× N c единичными элементами: > > ones(3, 4) ans = 1 1 1 1 1 1 1 1 1 1 1 1 eye(M, N) – создает матрицу размером M× N c единицами по главной диагонали и остальными нулевыми элементами: > > eye(3, 4) ans = 1 0 0 0 0 1 0 0 0 0 1 0 rand(M, N) – создает матрицу размером M× N из случайных чисел, равномерно распределенных в диапазоне от 0 до 1: > > rand(3, 4) ans = 0.9501 0.4860 0.4565 0.4447 0.2311 0.8913 0.0185 0.6154 0.6068 0.7621 0.8214 0.7919 randn(M, N) – создает матрицу размером M× N из случайных чисел, распределенных по нормальному закону с нулевым математическим ожиданием и стандартным (среднеквадратическим) отклонением, равным единице 1: > > randn(3, 4) ans = 1.1908 -0.1567 -1.0565 0.5287 -1.2025 -1.6041 1.4151 0.2193 -0.0198 0.2573 -0.8051 -0.9219 Для всех перечисленных команд можно задавать один аргумент M в случае квадратной матрицы (M=N): > > eye(3) ans = 1 0 0 0 1 0 0 0 1 rot90 – осуществляет разворот матрицы на 90o против часовой стрелки: > > Q=[1 2; 3 4] Q = 1 2 3 4 > > R=rot90(Q) R = 2 4 1 3 D=diag(V) – диагональная матрица, элементы которой задаются во входном аргументе - векторе V; D=diag(V, k) – диагональная матрица со смещенной на k позиций диагональю (положительные k – смещение вверх, отрицательные – вниз), результатом является квадратная матрица размера length(V)+abs(k); d=diag(A) – выделение главной диагонали из матрицы A в вектор d; d=diag(A, k) – выделение k-ой диагонали из матрицы A в вектор d. Пример: Создать трехдиагональную матрицу
A =
размера 5× 5 с помощью рассмотренных выше команд. Решение: Введем вектор V с целыми числами от одногодо пяти и используем его для создания диагональной матрицы и матрицы со смещенной на 2 вверх диагональю. Вектор длины четыре, содержащий двойки, заполняется, например, так: 2*ones(1, 4). Этот вектор укажем в первом аргументе команды diag, а минус единицу – во втором и получим третью вспомогательную матрицу. Теперь достаточно вычесть из первой матрицы вторую и сложить с третьей: > > V=1: 5; > > A=diag(V)-diag(V(1: 3), 2)+diag(2*ones(1, 4), -1) A = 1 0 -1 0 0 2 2 0 -2 0 0 2 3 0 -3 0 0 2 4 0 0 0 0 2 5 Более полная информация о специальных матрицах содержится в разделе elmat справочной системы MATLAB. |
Последнее изменение этой страницы: 2017-03-17; Просмотров: 359; Нарушение авторского права страницы