2015-06-12 22 views
-1

我有400个文件,每个包含大约500000个字符,而这些500000个字符只包含大约20个字母。我想创建一个直方图,指示使用的最多10个字母(x轴)和每个字母使用的次数(y轴)。我写了这段代码,里面有一些缺少的东西,我想知道每个条对应哪个字母。我应该在代码上添加什么?你可以改变整个代码,但保持这对我来说更好。为我提供整个代码,以便我可以将其直接复制到脚本并运行它。matlab,直方图中的每个条对应哪个字母

 i = 1; 
    z = zeros(1, 10); 
     for i=1:400 
    j = num2str(i); 
    file_name = strcat('part',j,'txt'); 
    file_id = fopen(file_name); 
    part = fread(file_id, inf, 'uchar'); 
    h = hist(part,10); 
    z = z + h; 
    fclose(file_id); 
end 

回答

0

首先,您使用hist是错误的。 hist(data,10)将根据由10个分箱组成的数据创建直方图,因此分箱将对应于文件中的多个字符。

解决这将是预定义仓喜欢使用hist道:

bins = 1:255; % define the bins for hist 
histSum = zeros(numel(bins),1); 

for file=1:10; 
    data = randi(25,100) + 'a';  %Generate random data - letters between 'a' and 'z' 
    data = reshape(T,numel(T),1); % Make it a vector 

    histSum = histSum + hist(data,bins)'; 
end 

请注意,您必须确定您的垃圾桶,以适应所有可能的值,因此从1到255