Числовые функции
.pdfЕсли массив A — вектор, cumsum(A) возвращает вектор, содержащий накопленную сумму его элементов.
Если массив A — матрица, cumsum(A) возвращает матрицу того же размера, что и исходная, в которой содержатся накопленные суммы элементов для каждого столбца A, начиная с первого.
Если массив A — многомерный массив, cumsum(A) обрабатывает значения элементов массива вдоль первого не единичного измерения.
B = cumsum(A,dim) возвращает кумулятивную сумму элементов A вдоль измерения, определенного в скаляре dim. Например, B = cumsum(A,1) действует вдоль первого измерения (стр´оки). По умолчанию dim = 1). Примеры:
>> cumsum(1:5) |
|
|
|
|
ans = |
|
|
|
|
[1 |
3 |
6 |
10 |
15] |
>> A = [1 2 3; 4 5 6]; |
||||
cumsum(A) |
|
|
|
|
ans = |
|
|
|
|
1 |
2 |
|
3 |
|
5 |
7 |
|
9 |
|
>> cumsum(A,2) |
|
|
|
|
ans = |
|
|
|
|
1 |
3 |
|
6 |
|
4 |
9 |
|
15 |
|
PROD
Возвращает произведение элементов массива. Синтаксис:
B = prod(A)
B = prod(A, dim)
аналогичен первым двум строкам функции SUM.
CUMPROD
Возвращает кумулятивное (накопленное, общее, интегральное) произведение элементов.
Синтаксис:
B = cumprod(A)
B = cumprod(A,dim)
Действие функции cumprod аналогично cumsum. Примеры:
>> cumprod(1:5) |
|
|||
ans = |
|
|
|
|
1 |
2 |
6 |
24 |
120 |
A = [1 2 3; 4 5 |
6]; |
|||
>> cumprod(A) |
|
|
||
ans = |
|
|
|
|
1 |
|
2 |
|
3 |
4 |
|
10 |
|
18 |
>> cumprod(A,2) |
|
|||
ans = |
|
|
|
|
1 |
|
2 |
|
6 |
4 |
|
20 |
120 |
|
MAX
Находит максимальный элемент в массиве. Синтаксис:
C = max(A)
C = max(A,B)
C = max(A,[ ],dim) [C,I] = max(...)
C = max(A) возвращает максимальные значения элементов вдоль различных измерений в массиве A. Результат зависит от представления массива и разнится вдоль разных измерений.
Если массив A — вектор, max(A) возвращает максимальный из всех элементов в A.
Если массив A — матрица, max(A) воспринимает матрицу как набор столбцов и возвращает вектор—строку, состоящую из максимальных элементов в каждом столбце.
Если массив A — многомерный массив, max(A) обрабатывает значения вдоль первого не единичного измерения как значения векторов и возвращает максимальные значения из каждого вектора.
C = max(A,B) возвращает массив такого же размера, как A и B, с максимальными значениями элементов взятых из A или B. Размеры массивов A и B должны соответствовать друг другу или они должны быть скалярами.
C = max(A,[ ],dim) возвращает наибольший элемент вдоль измерения, определенного в скаляре dim. Например, max(A,[ ],1) выдает максимальные значения вдоль первого измерения A (стр´оки).
[C,I] = max(...) находит индексы максимальных элементов в A и размещает их в выходном векторе I. Если в A содержится несколько равных максимальных элементов, то возвращаются индексы первого найденного максимального элемента.
Замечание:
для комплексных значений A max возвращает комплексные значения с максимальным значением модуля из всех элементов массива, вычисленных с использованием функции abs: max(abs(A)), игнорируя фазовый множитель angle(A). Функция max также игнорирует (не воспринимает) значения NaN.
Примеры:
>>X = [2 8 4;...
7 3 9]
>>max(X,[ ],1)
ans =
7 8 9
>> max(X,[ ],2)
ans = |
|
|
8 |
|
|
9 |
|
|
>> max(X,5) |
|
|
ans = |
|
|
5 |
8 |
5 |
7 |
5 |
9 |
MIN
Находит минимальный элемент в массиве. Синтаксис аналогичен синтаксису функции MAX.
FIND
Находит индексы и сами элементы в массиве. Синтаксис:
ind = find(X) ind = find(X, k)
ind = find(X, k, 'first') ind = find(X, k, 'last') [row,col] = find(...)
[row,col,v] = find(...)
При вызове ind = find(X) определяются все ненулевые элементы в X и возвращаются линейные индексы этих элементов в векторе ind. Если X — вектор—строка, ind также является вектор—строкой, в противном случае ind — вектор—столбец. Если X не содержит ненулевых элементов или является пустым массивом, тогда и ind — пустой массив.
При вызове ind = find(X, k) или ind = find(X, k, ’first’) возвращаются первые k индексов ненулевых элементов. k должно быть положительным целым числом любого численного типа.
ind = find(X, k, ’last’) возвращает последние k индексов ненулевых элементов.
[row,col] = find(...) возвращает индексы строк и столбцов ненулевых элементов матрицы X. Такой синтаксис особенно полезен при работе с разряженными матрицами. Если является N-мерным массивом, причем > 2, то содержит линейные индексы для измерений X, отличных от первого.
[row,col,v] = find(...) возвращает вектор—столбец v, состоящий из самих ненулевых элементов X, в соответствии с их индексами, записанными в row, col. Если X является логическим выражением, то v является логическим массивом, состоящим из результатов проверки логического выражения (условия), содержащегося в X, для каждого найденного в соответствии с этим условием ненулевого элемента, например:
>> A= magic(4) |
|
|
|
A = |
|
|
|
16 |
2 |
3 |
13 |
5 |
11 |
10 |
8 |
9 |
7 |
6 |
12 |
4 |
14 |
15 |
1 |
>> [r,c,v]= find(A>10);
>> r', c', v' |
|
|
|
|
|
ans = |
|
|
|
|
|
1 |
2 |
4 |
4 |
1 |
3 |
ans = |
|
|
|
|
|
1 |
2 |
2 |
3 |
4 |
4 |
ans = |
|
|
|
|
|
1 |
1 |
1 |
1 |
1 |
1 |
Примеры:
1) здесь возвращаются индексы ненулевых элементов X:
>>X = [1 0 4 -3 0 0 0 8 6];
>>indices = find(X) indices =
1 |
3 |
4 |
8 |
9 |
2) можно использовать логические выражения для поиска в X, например,
>> find(X > 2) ans =
3 8 9
возвращает линейные индексы соответствующих элементов X, б´ольших двух.
3) в этом примере возвращаются: r — вектор индексов строк ненулевых элементов X, c — вектор индексов столбцов ненулевых элементов X, v — сами ненулевые элементы X:
>>X = [3 2 0; -5 0 7; 0 0 1];
>>[r,c,v] = find(X)
r =
1
2
1
2
3
c =
1
1
2
3
3
v =
3 -5 2 7 1
4) в этом примере получаем r,c для ненулевых элементов X, при условии, что эти элементы больше 2, и логический массив v, состоящий из логических единиц, соответствующих выполнению условия X > 2 для этих элементов.
>> [r,c,v] = find(X>2) r =
1
2
c =
1
3
v =
1
1
5) несколько операций с векторами:
>> x = [11 0 33 0 55]';
>>find(x) ans =
1
3
5
>>find(x == 0) ans =
2
4
>>find(0 < x & x < 10*pi) ans =
1
6) для матриц:
>> M = magic(3) M =
8 |
1 |
6 |
3 |
5 |
7 |
4 |
9 |
2 |
>> find(M > 3, 4) ans =
1
3
5
6
find возвращает индексы первых четырех элементов, б´ольших 3, при обращении к элементам матрицы с помощью одного индекса.
7) если X представляет собой вектор, состоящий из одних нулей, то find возвращает пустой массив размера 0 × 1:
>> indices = find([0;0;0]) indices =
Empty matrix: 0-by-1
SORT Сортирует элементы массива по возрастанию или по убыванию. Синтаксис:
B = sort(A)
B = sort(A,dim)
B = sort(...,mode) [B,IX] = sort(...)
B = sort(A) сортирует элементы массива A вдоль различных измерений в массиве A в порядке возрастания (по умолчанию). Допускаются массивы следующих типов: целочисленные, с плавающей точкой (в том числе, комплексные), логические, символьные. Для элементов с одинаковыми значениями их порядок в выходном массиве сохраняется. Для комплексных значений элементы сортируются по значениям их модулей (abs(A)). Если встретятся одинаковые значения комплексных элементов, то при расстановке элементов в выходном массиве будут сначала приняты во внимание значения их модулей, а затем значения их фаз (angle(A)). Все элементы типа NaN размещаются в конце выходного массива.
B= sort(A,dim) сортирует элементы вдоль измерения, определенного в скаляре dim.
B= sort(..., mode) сортирует элементы в определенном порядке: mod = 'ascend' — по неубыванию, mod = 'descend' — по невозрастанию.
[B,IX] = sort(A,...) возвращает также массив индексов IX, где size(IX) == size(A). Если A — вектор, B = A(IX), если A — матрица ×, тогда каждый столбец A представляет собой вектор перестановок с соответствующим столбцом из A, например, так:
for j = 1:n
B(:,j) = A(IX(:,j),j);
end
Примеры:
>>A = [ 3 7 5;...
0 4 2 ];
>>sort(A,1)
ans = |
|
|
0 |
4 |
2 |
3 |
7 |
5 |
>> sort(A,2) |
|
|
ans = |
|
|
3 |
5 |
7 |
0 |
2 |
4 |
>> [B,IX] = sort(A,2) B =
3 |
5 |
7 |
0 |
2 |
4 |
IX = |
|
|
1 |
3 |
2 |
1 |
3 |
2 |
% сортировка по невозрастанию:
