Вы можете использовать ISMEMBER вместо UNIQUE , чтобы решить эту проблему:
characterCell = {'a' 'b' 'b' 'a' 'b' 'd' 'c' 'c'}; %# Sample cell array
matchCell = {'a' 'b' 'c' 'd' 'e'}; %# Letters to count
[~,index] = ismember(characterCell,matchCell); %# Find indices in matchCell
counts = accumarray(index(:),1,[numel(matchCell) 1]); %# Accumulate indices
И вы должны получить следующее для counts
:
counts =
2
3
2
1
0
EDIT:
Если я правильно понимаю ваш комментарий, звучит так, будто вы хотите сохранить или отобразить буквы вместе с их количеством вхождений. Один из способов сделать это - собрать их вместе в массив ячеек 5 на 2, сначала преобразовав counts
в массив ячеек, используя NUM2CELL :
>> results = [matchCell(:) num2cell(counts)]
results =
'a' [2]
'b' [3]
'c' [2]
'd' [1]
'e' [0]
Или вы можете создать массив символов для их отображения, преобразовав counts
в строку, используя NUM2STR :
>> results = strcat(char(matchCell(:)),':',num2str(counts))
results =
a:2
b:3
c:2
d:1
e:0