Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Числовые функции

.pdf
Скачиваний:
16
Добавлен:
10.05.2015
Размер:
272.03 Кб
Скачать

Если массив 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

% сортировка по невозрастанию: