2017-10-09 10 views
1

は私がカウント量があるセル名は、セル配列に表示される[MATLAB]

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

私は特定のセル名が表示された時間の量をカウントしたい、 ので、セル・アレイの出力を考えてみましょう

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

これは基本的な(またはわかりやすい)構文でこれを行う方法ですか?私はこれに非常に新しいですので、あなたの答えを説明してください、ありがとう!

答えて

4

uniqueaccumarrayを使用して、配列内のユニークワードを特定し、出現回数をカウントして、結果をコンソールにfprintfとして出力することができます。例えば

印刷し
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 

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

注意をuniqueが混在ケースが考えられる場合は、問題を回避するためにlowerのようなもので、文字列のあなたの配列を正規化する必要があり、大文字と小文字が区別されていることカウントと一緒に。

2

あなたは、離散カテゴリの有限集合に文字のあなたのセル配列を変換するcategoricalを使用することができます。その後は、各カテゴリの発生頻度カウントするhistogramを使用することができます。

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

オルタナティブ1:histcounts

あなたはプロットに興味がない場合は、代わりにhistcountsを使用することができます。

[N,categories] = histcounts(Z_); 

オルタナティブ2:

summary(Z_); 
:あなたが画面に結果を印刷するだけ興味があるなら、あなたはsummary代わりのhistogramを使用することができます

概要