2

我想用字符串中字符条目的频率构建直方图。
Matlab 版本 7.14.0.739
这是我的代码

string = 'sadfjwopqiejroweifoxncvpowoirjqwerr';
map = containers.Map();
for i = 1:length(string) - 1
    if (isKey(map, string(i) ))
        map(string(i)) =  map(string(i)) + 1;
    else
        map(string(i)) =  1; 
    end
end

bar(cell2mat(keys(map)), cell2mat(values(map)) );  

我收到一个错误:
使用 bar 时出错(第 51 行)必须提供 Y 数据或 X 和 Y 数据作为第一个参数。

lab4 错误(第 11 行) bar(cell2mat(keys(map)), cell2mat(values(map)) );

怎么了?

4

1 回答 1

3

问题是 的第一个参数bar必须提供条形图的 x 值。当你这样做时,cell2mat(keys(map))你只需创建一个长字符串,它是所有键的连接,这是bar.

尝试做这样的事情:

bar(cell2mat(values(map)));
k = keys(map);
set(gca, 'XTick', 1:length(k));
set(gca, 'XTickLabel', k);
于 2012-12-20T19:33:19.543 回答