gpt4 book ai didi

matlab - 计算单元格中的字母 "matlab"

转载 作者:行者123 更新时间:2023-12-02 08:52:46 25 4
gpt4 key购买 nike

how to count unique elements of a cell in matlab?上面的代码将计算单元格中的字符数我喜欢这个

[uniqueC,~,idx] = unique(characterCell); %# uniqueC are unique entries in c
%# replace the tilde with 'dummy' if pre-R2008a
counts = accumarray(idx(:),1,[],@sum);

但问题是:我的单元格包含从 a 到 e 的字母。我想找到没有'a's 'b's......这段代码不会告诉你有例如如果不可用则为零。只是计数为 4,而不是 5

1223

而不是

12230

如何添加

     a=1     b=2......

最佳答案

您可以使用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 =

2
3
2
1
0

编辑:

如果我正确理解您的评论,听起来您想存储或显示字母及其出现次数。实现此目的的一种方法是首先使用 NUM2CELLcounts 转换为元胞数组,将它们收集到一个 5×2 元胞数组中。 :

>> results = [matchCell(:) num2cell(counts)]

results =

'a' [2]
'b' [3]
'c' [2]
'd' [1]
'e' [0]

或者您可以创建一个字符数组来显示它们,方法是使用 NUM2STRcounts 转换为字符串。 :

>> results = strcat(char(matchCell(:)),':',num2str(counts))

results =

a:2
b:3
c:2
d:1
e:0

关于matlab - 计算单元格中的字母 "matlab",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7276317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com