假设我有一个字符串向量,如下所示
'1 2'
'1'
'1'
'1'
'1'
'1'
'1'
'1'
'1'
'1'
如何从此向量中获取字符串的频率? Unique()不起作用并给出错误 使用cell / unique时出错 输入A必须是字符串的单元格数组。
答案 0 :(得分:4)
我猜你的向量中包含一个非char元素。您应该首先将矢量转换为有效的cellstr。
string_vector = your_vector(cellfun(@ischar, your_vector));
[unique_strings, ~, indices] = unique(string_vector);
frequencies = accumarray(indices(:), 1);
答案 1 :(得分:1)
虽然kyamagu的回答看起来最简单,但我带来的是bsxfun
和vectorization
的爱 -
all_nums = char(INPUT_CELLARRAY);
unique_nums = unique(all_nums,'rows');
t1 = all_nums-'0';
t2 = permute(unique_nums-'0',[3 2 1]);
strings = cellstr(unique_nums)
count = squeeze(sum(all(bsxfun(@eq,t1,t2),2),1))
<强>输出强>
strings =
'1'
'1 2'
count =
9
1