Статистические функции и сортировка
Рассмотрим в качестве примера матрицу 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 строки.