Статистические функции и сортировка

Рассмотрим в качестве примера матрицу 4x3

a = [1.0 2.0 3.0;
     1.2 5.2 6.1;
     1.3 8.0 9.6;
     1.5 3.6 1.6];

Статистические функции

Сумма

Функция sum вычисляет сумму элементов в столбцах или строках. Если аргумент функции является строка и столбец, то вычисляется сумма всех элементов, если матрица, то по умолчанию вычисляется сумма элементов в столбцах

>> sum(a)

ans =
    5.0000   18.8000   20.3000

Второй аргумент функции sum это номер измерения, в котором требуется вычислить сумму: 1 – сумма элементов в столбцах (это действие по умолчанию), 2 – в строках

>> sum(a,2)

ans =
    6.0000
   12.5000
   18.9000
    6.7000

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

>> sum(sum(a))

или вызвать функцию один раз для матрицы преобразованной в один столбец a(:)

>> sum(a(:))

Максимальное значение

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

>> max(a)

ans =
    1.5000    8.0000    9.6000

В отличие от функции sum, для того, чтобы найти максимальные значения в строках матрицы a, номер измерения необходимо передать третьим аргументом

>> max(a,[],2)

ans =
    3.0000
    6.1000
    9.6000
    3.6000

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

>> a = [1 2; 
        3 4];

>> b = [2 0;
        5 1];

>> max(a,b)

ans =
     2     2
     5     4

Минимальное значение

Аналогичным образом действует функция min

a = [1.0 2.0 3.0;
     1.2 5.2 6.1;
     1.3 8.0 9.6;
     1.5 3.6 1.6];

>> min(a)

ans =
    1.0000    2.0000    1.6000

>> min(a,[],2)

ans =
    1.0000
    1.2000
    1.3000
    1.5000    

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

>> [min_values, min_index] = min(a)

min_values =

    1.0000    2.0000    1.6000


min_index =

     1     1     4

В этом случае min_values будет содержать найденные минимальные значения в столбцах матрицы, а min_index – номера строк этих элементов.

Среднее значение

Среднее значение элементов в столбцах. Для матрицы a m \times n

M_1(a) = \sum_{i=1}^m a_{i,j} / m
>> mean(a)

ans =
    1.2500    4.7000    5.0750

Среднее значение элементов в строках

M_2(a) = \sum_{j=1}^n a_{i,j} / n
>> mean(a,2)

ans =
    2.0000
    4.1667
    6.3000
    2.2333

Стандартное отклонение

Для вычисления несмещенной оценки стандартного отклонения элементов в столбцах используется функция std

\sigma_1(a) = \sqrt{\sum_{i=1}^m (a_{i,j} - M_1)^2 / (m-1)}
>> std(a)

ans =
    0.2082    2.5586    3.5547

Для вычисления смещенной оценки

\sigma_1(a) = \sqrt{\sum_{i=1}^m (a_{i,j} - M_1)^2 / m}

функция std вызывается со вторым аргументом равным 1 (по умолчанию он равен 0)

>> std(a,1)

ans =
    0.1803    2.2159    3.0785

Третий аргумент функции – номер размерности

>> std(a,0,2)

ans =
    1.0000
    2.6083
    4.4034
    1.1846

Сортировка

Для сортировки элементов матрицы в столбцах или строках используется функция sort. Сортировка элементов в столбцах

>> a = [1.0 2.0 3.0;
        1.2 5.2 6.1;
        1.3 8.0 9.6;
        1.5 3.6 1.6];

>> sort(a)

ans =
    1.0000    2.0000    1.6000
    1.2000    3.6000    3.0000
    1.3000    5.2000    6.1000
    1.5000    8.0000    9.6000

и в строках

>> sort(a,2)

ans =
    1.0000    2.0000    3.0000
    1.2000    5.2000    6.1000
    1.3000    8.0000    9.6000
    1.5000    1.6000    3.6000

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

>> [sorted, index] = sort(a)

sorted =
    1.0000    2.0000    1.6000
    1.2000    3.6000    3.0000
    1.3000    5.2000    6.1000
    1.5000    8.0000    9.6000

index =
     1     1     4
     2     4     1
     3     2     2
     4     3     3

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

Если необходимо отсортировать элементы столбцов в соответствии с сортировкой, например, третьего столбца необходимо сделать так:

>> [sorted, index] = sort(a);
>> a(index(:,3),:)

ans =
    1.5000    3.6000    1.6000
    1.0000    2.0000    3.0000
    1.2000    5.2000    6.1000
    1.3000    8.0000    9.6000

Первым действием выполняем сортировку матрицы (независимо каждый столбец). Вторым действием выбираем из исходной матрицы строки в соответствии с новым положением элементов в третьем столбце: 4, 1, 2 и 3 строки.