计算matlab中向量中的字符串数

时间:2014-04-01 18:51:33

标签: matlab

假设我有一个字符串向量,如下所示

'1 2'
'1'
'1'
'1'
'1'
'1'
'1'
'1'
'1'
'1'

如何从此向量中获取字符串的频率? Unique()不起作用并给出错误 使用cell / unique时出错 输入A必须是字符串的单元格数组。

2 个答案:

答案 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的回答看起来最简单,但我带来的是bsxfunvectorization的爱 -

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