У меня есть матрица в MATLAB, и мне нужно найти значение 99% для каждого столбца. Другими словами, значение, такое, что 99% населения имеет большее значение, чем оно. Есть ли функция в MATLAB для этого?
Как вычислить охват 99% в MATLAB?
Ответ 1
Используйте функцию QUANTILE.
Y = quantile(X,P);
где X - матрица, а P - скаляр или вектор вероятностей. Например, если P = 0,01, Y будет вектором значений для каждого столбца, так что 99% значений столбцов больше.
Ответ 2
Самое простое решение - использовать функцию QUANTILE как yuk предложил.
Y = quantile(X,0.01);
Однако вам понадобится Инструмент статистики, чтобы использовать функцию QUANTILE. Решение, не зависящее от панелей инструментов, можно найти, отметив, что QUANTILE вызывает функцию PRCTILE, который сам вызывает встроенную функцию INTERP1Q для выполнения первичных вычислений, Для общего случая двумерной матрицы, которая не содержит значений NaN, вы можете вычислить квантили каждого столбца, используя следующий код:
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
Это должно дать вам те же результаты, что и вызов QUANTILE без каких-либо инструментов.
Ответ 3
Если у вас нет панели инструментов статистики, всегда есть
y=sort(x);
y(floor(length(y)*0.99))
или
y(floor(length(y)*0.01))
в зависимости от того, что вы имели в виду.