Вопрос

У меня есть матрица в Matlab, и мне нужно найти значение 99% для каждого столбца. Другими словами, ценность такова, что 99% населения имеет большее значение, чем это. Есть ли функция в Matlab для этого?

Это было полезно?

Решение

Используйте квантильную функцию.

Y = quantile(X,P);

где X - матрица, а P - скаляр или вектор вероятностей. Например, если p = 0,01, y будет вектор значений для каждой колонны, так что 99% значений столбцов больше.

Другие советы

Самое простое решение - использовать функцию Квантиль так как ЮК предложил.

Y = quantile(X,0.01);

Тем не менее, вам понадобится Статистика инструментов использовать функцию Квантиль. Отказ Решение, которое не зависит от набора инструментов, можно найти, отметив, что Квантиль называет функцию Проститутка, который сама называет встроенной функцией Interp1q. делать основные вычисления. Для общего случая 2-D матрицы, которая не содержит Нан Значения, которые вы можете вычисления квантилей каждого столбца, используя следующий код:

P = 0.01;       %# Your probability
S = sort(X);    %# Sort the columns of your data X
N = size(X,1);  %# The number of rows of X
Y = interp1q([0 (0.5:(N-0.5))./N 1]',S([1 1:N N],:),P);  %'# Get the quantiles

Это должно дать вам те же результаты, что и звон Квантиль, не требуя каких-либо инструментов.

Если у вас нет инструментов статистики, всегда есть

y=sort(x);
y(floor(length(y)*0.99))

или

y(floor(length(y)*0.01))

В зависимости от того, что вы имели в виду.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top