热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用matlab计算文本中字母的频率

如何解决《使用matlab计算文本中字母的频率》经验,为你挑选了1个好方法。

假设我们有以下文字

s='i love georgia and its nature';

我想要的是计算每个字母的出现频率(当然不包括空格)和草绘一些图表(例如条形图),首先我创建了使用地图容器计数字母的代码

 function character_count(s)
    % s is given string and given program will count  occurence of letters in
    % sentence
    MAP=containers.Map();% initialize   MAP for frequency counting
    n=length(s); % get length of given string
    letters=unique_without_space_sorting(s);
    for ii=1:n
        if ~isletter(s(ii))==1
            continue;
        elseif  isKey(MAP,s(ii) )
            MAP(s(ii)) = MAP(s(ii))  + 1;
        else
          MAP(s(ii)) = 1;

        end
    end
      y=values(MAP);
      y= cell2mat(y);
     bar(y);
    set(gca,'xticklabel',letters)

    end

这里的功能

letters=unique_without_space_sorting(s);

返回字符串s的字母数组,没有排序和空格,这里是它对应的代码

 function cell_stirng=unique_without_space_sorting(s)
    s=regexprep(s,'[^\w'']','');
     [~, idxs, ~] = unique(s, 'last');
     s= s(sort(idxs));
     n=length(s);
     cell_stirng=cell(n,1);
     for jj=1:n
         cell_string{jj}=s(jj);
     end
     end

当我运行此代码时,我得到了以下图像 在此输入图像描述

如你所见,x轴上没有标签,我该如何解决这个问题呢?提前致谢



1> Suever..:

您可以使用第一个输出unique来为您提供唯一值,并将它们用作x标签

[values, idxs, ~] = unique(s, 'last');

% Make sure that they aren't sorted
[~, sortind] = sort(idxs);
values = num2cell(values(sortind));

% And later after creating your bar plot
set(gca, 'xtick', 1:numel(values), 'XTickLabels', values);

或者不是这样做,您可以使用stable输入来unique确保它们的外观顺序相反.

S = lower(strrep(s, ' ', ''));
[values, ~, b] = unique(S, 'stable');

hist(b, unique(b))
set(gca, 'xtick', 1:numel(values), 'xticklabels', num2cell(values))

或者如果你想要所有字母的直方图

S = lower(strrep(s, ' ', ''));
counts = histcounts(double(S), double('a':'z'));
bar(counts)
set(gca, 'xtick', 1:26, 'xticklabels', num2cell('a':'z'))


推荐阅读
author-avatar
FXHT4564_845
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有