2017-10-09 7 views
1

Disons que je le réseau de cellulesquantité de comptage de temps un certain nom de la cellule apparaît dans le tableau de cellules [Matlab]

Z = {'Pizza' 'Hamburger' 'Hamburger' 'Sushi' 'Bacon' 'Hamburger'} 

Je veux compter le temps un certain nom de la cellule apparaît, de sorte que la sortie devrait être quelque chose comme

Pizza = 1 
Hamburger = 3 
Sushi = 1 
Bacon = 1 

est-il un moyen de le faire avec BASIC (ou facilement compréhensible) syntaxe? Je suis extrêmement nouveau à ce sujet alors s'il vous plaît expliquer votre réponse, merci!

Répondre

4

Vous pouvez utiliser unique et accumarray pour identifier les mots uniques dans votre tableau et compter leurs occurrences, en imprimant les résultats à la console avec fprintf.

Par exemple:

Z = {'Pizza' 'Hamburger' 'Hamburger' 'Sushi' 'Bacon' 'Hamburger'}; 

% Get unique words & their indices in Z 
[words, ~, wordidx] = unique(Z); 

% Sum occurrences of indices to get count for each word 
wordcounts = accumarray(wordidx, 1); 

% Loop and print 
for ii = 1:numel(words) 
    fprintf('%s = %u\n', words{ii}, wordcounts(ii)) 
end 

qui imprime:

Bacon = 1 
Hamburger = 3 
Pizza = 1 
Sushi = 1 

Notez que unique est sensible à la casse, si les cas mixtes sont possibles, vous devez normaliser votre tableau de chaînes avec quelque chose comme lower pour éviter les problèmes avec le compte.

2

Vous pouvez utiliser categorical pour convertir votre tableau de cellules en un ensemble fini de catégories discrètes. Ensuite, vous pouvez utiliser histogram compter la fréquence de chaque catégorie se produit:

Z = {'Pizza' 'Hamburger' 'Hamburger' 'Sushi' 'Bacon' 'Hamburger'}; 
Z_ = categorical(Z); 
h = histogram(Z_); 
h.Categories % the different categories 
h.Values % the number of occurrence 

Alternative 1: histcounts

Si vous n'êtes pas intéressé par l'intrigue, vous pouvez utiliser histcounts à la place.

[N,categories] = histcounts(Z_); 

Alternative 2: Résumé

Si vous ne souhaitez imprimer le résultat à l'écran, vous pouvez utiliser summary au lieu de histogram:

summary(Z_);