2011-03-22 10 views

Respuesta

31

Se puede utilizar en combinación con uniquehistc para obtener la frecuencia relativa.

A=[1,2,3,1,2,4,2,1]; %#an example vector 
unqA=unique(A); 

Esto le da los elementos únicos como unqA=[1,2,3,4]. Para obtener el número de ocurrencias,

countElA=histc(A,unqA); %# get the count of elements 
relFreq=countElA/numel(A); 

Esto da countElA=[3,3,1,1] y relFreq=[0.3750, 0.3750, 0.1250, 0.1250], que es la frecuencia relativa de los elementos únicos. Esto funcionará tanto para enteros como para puntos flotantes.

10

Para el caso más general donde se tiene un vector de valores de punto flotante, puede utilizar las funciones UNIQUE y ACCUMARRAY:

[uniqueValues,~,uniqueIndex] = unique(vector); 
frequency = accumarray(uniqueIndex(:),1)./numel(vector); 
+0

gracias por accumarray –

4

Puede usar la función tabular. Mira este ejemplo con tu vector.

vector = [ 2 2 2 2 1 1 1 2 2 1 1 1 2 2 2 2 1 2 ]; 
tabulate(vector); 
    Value Count Percent 
     1  7  38.89% 
     2  11  61.11% 

Si lo necesita con el fin ciento, lo hacen:

t = tabulate(vector); 
t = sortrows(t, 3) 
0

Refiriéndose a partir this respuesta:

unqV = unique(vector); 
y = zeros(size(unqV)); 
for i = 1:length(unqV) 
    y(i) = sum(unqV(i)==vector); 
end 

unqV = [1 2]
y = [7 11]

Cuestiones relacionadas