Domanda

Ho una matrice in MATLAB e ho bisogno di trovare il valore del 99% per ogni colonna. In altre parole, il valore tale che il 99% della popolazione ha un valore più grande di quanto. C'è una funzione in MATLAB per questo?

È stato utile?

Soluzione

Utilizzare la funzione quantile.

Y = quantile(X,P);

dove X è una matrice e P è scalare o vettoriale delle probabilità. Ad esempio, se P = 0,01, Y sarà vettore di valori per ogni colonna, in modo che il 99% dei valori di colonna sono più grandi.

Altri suggerimenti

La soluzione più semplice è quella di utilizzare la funzione di quantile come < a href = "https://stackoverflow.com/questions/2384977/finding-99-coverage-in-matlab/2385024#2385024"> yuk suggerito.

Y = quantile(X,0.01);

Tuttavia, è necessario il Statistics Toolbox per utilizzare la funzione quantile . Una soluzione che non dipende cassette possono essere trovate notando che quantile chiama la funzione PRCTILE , che si chiama la funzione incorporata INTERP1Q fare il calcolo primario. Per il caso generale di una matrice 2-D che non contiene NaN i valori si possono calcolare i quantili di ogni colonna utilizzando il seguente codice:

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

Questo dovrebbe dare gli stessi risultati come chiamare Quantile , senza bisogno di cassette degli attrezzi.

Se non si dispone del Statistics Toolbox, c'è sempre

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

o

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

a seconda di quello che volevi dire.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top